如何杀死android中所有正在运行的应用程序?

Nan*_*ani 15 android

我想杀死android .so中所有正在运行的应用程序,为此任务,我实现了以下代码.但它没有用.App仍然在运行.

ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningAppProcessInfo service : manager.getRunningAppProcesses()) {
    Log.i("process name " , service.processName);

    android.os.Process.killProcess(service.pid);
    }
Run Code Online (Sandbox Code Playgroud)

那么我在代码中哪里犯了错误?有什么帮助吗?

has*_*ian 21

  • 您可以Process.killProcess(int pid)用来杀死UID与您的应用程序具有相同的进程.
  • 可以使用ActivityManager.killBackgroundProcesses(String packageName)KILL_BACKGROUND_PROCESSES在您的清单许可(对于API> = 8)或ActivityManager.restartPackage (String packageName)(用于API <8)杀指定过程中,除forground过程.

因此,如果您在程序是前台进程时要杀死所有其他进程,您将使用ActivityManager.killBackgroundProcessesActivityManager.restartPackage:

List<ApplicationInfo> packages;
    PackageManager pm;
    pm = getPackageManager();
    //get a list of installed apps.
    packages = pm.getInstalledApplications(0);

   ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
   String myPackage = getApplicationContext().getPackageName();
   for (ApplicationInfo packageInfo : packages) {
        if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
        if(packageInfo.packageName.equals(myPackage)) continue;
        mActivityManager.killBackgroundProcesses(packageInfo.packageName);
   }      
Run Code Online (Sandbox Code Playgroud)

在上面的代码段中,每个进程都将被终止,除非它是您的应用程序或系统进程的进程.
参考:
如何从我的Android应用程序关闭所有活动的应用程序?
任务杀手如何运作?

  • 它会从最近的应用程序列表中删除应用程序(通过长按主页按钮显示)吗? (3认同)

aym*_*ric 5

如果设备已植根(具有超级用户权限),您还有另一种可能性.

您可以调用将使用su权限的外部进程.但请注意,这可能是一个糟糕的设计,因为Android OS应该是唯一一个杀死进程的人.

try {
   Process rootProcess = Runtime.getRuntime().exec(new String[] { "su" });

   String command = "kill - 9 <pid>";

   BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(rootProcess.getOutputStream()), 2048);
   try {
      bw.write(command);
      bw.newLine();
      bw.flush();
   } catch (IOException e) {
    // Handle error
   }
} catch (Exception e) {
   e.printStackTrace();
   // Device not rooted!            
}
Run Code Online (Sandbox Code Playgroud)