【发布时间】:2019-02-22 00:17:30
【问题描述】:
我正在android上开发一个看门狗系统服务。 如果我检测到某些前台应用程序被阻止/停止,我想强制重启应用程序。
我已经尝试杀死后台应用程序,但没有成功(因为我正在尝试杀死前台应用程序)。 此外,通过 exec(adb shell su killall com.package.name) 在没有权限的情况下崩溃,因为我是“只是”系统,而不是 root 设备。
【问题讨论】:
标签: android
我正在android上开发一个看门狗系统服务。 如果我检测到某些前台应用程序被阻止/停止,我想强制重启应用程序。
我已经尝试杀死后台应用程序,但没有成功(因为我正在尝试杀死前台应用程序)。 此外,通过 exec(adb shell su killall com.package.name) 在没有权限的情况下崩溃,因为我是“只是”系统,而不是 root 设备。
【问题讨论】:
标签: android
终于有办法了。
您可以通过以下方式获取pid名称
private int getAppUid(String packageName){
ActivityManager mActivityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pidsTask = mActivityManager.getRunningAppProcesses();
for(int i = 0; i < pidsTask.size(); i++) {
if (pidsTask.get(i).processName.equals(packageName)){
return pidsTask.get(i).uid;
}
}
return -1;
}
之后,你可以直接杀死它
android.os.Process.killProcess(pUID);
适用于我的 android 7 设备。
【讨论】: