【问题标题】:As a system app, kill another process, by package name作为系统应用程序,通过包名杀死另一个进程
【发布时间】:2019-02-22 00:17:30
【问题描述】:

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

我已经尝试杀死后台应用程序,但没有成功(因为我正在尝试杀死前台应用程序)。 此外,通过 exec(adb shell su killall com.package.name) 在没有权限的情况下崩溃,因为我是“只是”系统,而不是 root 设备。

【问题讨论】:

    标签: android


    【解决方案1】:

    终于有办法了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2011-03-21
      • 1970-01-01
      相关资源
      最近更新 更多