如何以编程方式杀死第三个应用程序?

时间:2013-08-12 16:53:24

标签: java android process task

如何杀死Android中的应用程序?

killPackageProcesses(services.get(i).baseActivity.getPackageName());

这是函数killPackageProcesses

public void killPackageProcesses(String packagename) {
    int pid = 0;
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> pids = am
            .getRunningAppProcesses();
    for (int i = 0; i < pids.size(); i++) {
        ActivityManager.RunningAppProcessInfo info = pids.get(i);
        if (info.processName.equalsIgnoreCase(packagename)) {
            pid = info.pid;
        }
    }
    android.os.Process.killProcess(pid);

}

它不起作用。它如何适用于其他应用程序? 许可是写的。

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

1 个答案:

答案 0 :(得分:3)

你无法杀死Android中的任何进程。来自the documentation on Process

  

请注意,尽管此API允许我们请求终止任何进程   基于其PID,内核仍然会施加标准限制   你实际上能够杀死哪些PID。通常这只意味着   运行调用者的包/应用程序的过程   该应用程序创建的其他进程;包共享一个共同点   UID也可以杀死彼此的进程。

另请注意,您在清单中请求的权限不会像您认为的那样有效。根据{{​​3}},KILL_BACKGROUND_PROCESS

  

允许应用程序调用killBackgroundProcesses(String)。