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

标签 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" />

最佳答案

您不能随意终止 Android 中的任何进程。来自 the documentation on Process :

Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.

另请注意,您在 list 中请求的权限并不按您想象的方式工作。根据documentationKILL_BACKGROUND_PROCESS:

Allows an application to call killBackgroundProcesses(String).

关于java - 如何以编程方式杀死第三个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192502/

相关文章:

java - OSGI 声明式服务 (DS) : What is a good way of using service component instances

java - PHP socket_read() 和 socket_recv() 问题

java - 如何 stub wsdl 服务端点?

Android SDK 的 adb : 32bit or 64? hello-world 失败

c - 在C中,如何创建多个子进程(不知道需要多少个)?

java - 返回给定整数的位数的递归方法

android - 当我将蓝色的整个可能色相范围赋予蓝色时,为什么inRange函数无法检测到蓝色?

android - RXJava 和 DialogFragment => Dialog 等待 observable - 为什么?

python - python的进程间通信

linux - 谁启动操作系统进程调度程序?