作为系统应用程序,请按程序包名称终止另一个进程

时间:2019-02-20 14:56:03

标签: android

我正在Android上开发看门狗系统服务。 如果我检测到某些前台应用被阻止/停止,我想强制重启该应用。

我已经尝试杀死后台应用程序,但没有成功(因为我正试图杀死前台应用程序)。 同样,通过exec(adb shell su killall com.package.name)崩溃也没有权限,因为我是“公正”系统,而不是根目录设备。

1 个答案:

答案 0 :(得分:0)

终于有办法了。

您可以通过以下方式获取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设备。