0

我在从我的应用程序中杀死第三方应用程序时遇到问题。这是代码:

ActivityManager activityManager = (ActivityManager) getApplicationContext()
        .getSystemService(ACTIVITY_SERVICE);

List<RunningAppProcessInfo> appProcesses = activityManager
        .getRunningAppProcesses();
for (RunningAppProcessInfo appProcess : appProcesses) {

    if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
        if (appProcess.pkgList[0].equalsIgnoreCase("com.adobe.air")) {
            Log.v("ACTIVITY FOUND", "" + appProcess.pkgList[0]
                    + " - " + appProcess.pid);

            activityManager.killBackgroundProcesses("com.adobe.air");
            activityManager.restartPackage("com.adobe.air");

            android.os.Process.killProcess(appProcess.pid);


        }
    }
}
Log.v("RUN", "----------------------------------");

在 AndroidManifest 我添加了权限android.permission.KILL_BACKGROUND_PROCESSESandroid.permission.RESTART_PACKAGES.

在日志中,当 com.adobe.air 包正在运行时,我可以正确读取消息,但是killBackgroundProcessesrestartPackage并且KillProcess没有成功强制关闭应用程序本身。怎么了?

4

1 回答 1

0
  1. 您可以使用 Process.killProcess(int pid) 来终止与您的应用程序具有相同 UID 的进程。
  2. 您可以在清单中使用 ActivityManager.killBackgroundProcesses(String packageName),并具有 KILL_BACKGROUND_PROCESSES 权限(对于 API >= 8)
  3. 或 ActivityManager.restartPackage (String packageName) (for API < 8) 杀死指定进程,前台进程除外。
于 2013-10-22T05:12:13.430 回答