2016-06-16 3 views
2

J'ai un appareil Android enraciné. À un moment donné, je lance une application secondaire de mon application principale comme ceci:Android - Kill App à partir d'une autre application (sur un appareil rooté)

Intent intent = getPackageManager().getLaunchIntentForPackage("com.app.package"); 
startActivityForResult(intent, 100); 

Je veux être en mesure de tuer cette application secondaire dès la première application. Je suis en train de la procédure générale suivante:

// At an earlier point in time... 
Runtime.getRuntime().exec("su"); 
// The user grants permission 

// ... 

// At a later point in time... 
Runtime.getRuntime().exec("su am force-stop com.app.package"); 

Malheureusement, cela ne tue pas l'application, sans indication quant à la raison pour laquelle de logcat. Si j'essaie d'exécuter la commande de destruction en tant que "suis force-stop com.app.package" au lieu de "je suis force-stop com.app.package", logcat dit que je n'ai pas la permission, même même si j'ai obtenu l'autorisation du superutilisateur d'exécuter "su" plus tôt.

Répondre

4

trouvé une solution:

Process suProcess = Runtime.getRuntime().exec("su"); 
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream()); 

os.writeBytes("adb shell" + "\n"); 

os.flush(); 

os.writeBytes("am force-stop com.xxxxxx" + "\n"); 

os.flush();