2013-10-14 3 views
0

J'ai un problème avec les applications tierces de mon application. Voici le code:Android: Tuer une troisième application

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", "----------------------------------"); 

Et je AndroidManifest ajouté les autorisations android.permission.KILL_BACKGROUND_PROCESSES et android.permission.RESTART_PACKAGES.

Connexion Je peux lire correctement le message lorsque le paquet com.adobe.air est en cours d'exécution, mais killBackgroundProcesses, restartPackage et KillProcess ont aucune force de succès la fermeture de l'application elle-même. Qu'est-ce qui ne va pas?

+3

Vous devez être rooté ou une application système pour tuer d'autres applications. – Simon

Répondre

0
  1. Vous pouvez utiliser Process.killProcess (int pid) pour tuer les processus qui ont le même UID avec votre application.
  2. Vous pouvez utiliser ActivityManager.killBackgroundProcesses (String PackageName), avec la permission KILL_BACKGROUND_PROCESSES dans votre manifeste (pour API> = 8)
  3. ou ActivityManager.restartPackage (String packageName) (pour API < 8) pour tuer spécifié processus, à l'exception du processus forground.
Questions connexes