Forcer la fermeture d'une application par programmation
J'ai besoin de faire une application qui peut par programme faire ce que l' forcer l'arrêt bouton d'applications. (Je suis en utilisant racine autorisations)
J'ai essayé ce code:
private void killApp(){
try {
int pid = getPid(com.XXX);
if(pid != -1){
String command = "kill "+pid;
Log.i("Got PID",pid + "");
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes(command + "\n");
os.flush();
Log.i("Executed","Kill " + pid);
} catch (IOException e) {
// Handle error
}
} else {
Log.i("Not Found","App Not Found");
}
} catch (Exception e) {
e.printStackTrace(); // Device not rooted!
}
}
private int getPid(String packageName){
ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pids = am.getRunningAppProcesses();
int processid = 0;
for(int i = 0; i < pids.size(); i++) {
ActivityManager.RunningAppProcessInfo info = pids.get(i);
Log.i("PID",pids.get(i) + "");
Log.i("PID Package",info.processName);
if(info.processName.equalsIgnoreCase(packageName)){
processid = info.pid;
return processid;
}
}
return -1;
}
Mais le problème est que le processus n'est pas trouvé, même si le bouton forcer l'arrêt n'est pas grisé.
Même À L'Aide De:
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes("kill "+ APP_PID + "\n");
os.flush();
Ne pas faire ce que la force de bouton d'arrêt n'car après j'exécute ce code, le bouton forcer l'arrêt n'est pas grisé.
À l'aide de la racine comment pouvez-I du programme, faire ce que le bouton forcer l'arrêt de l'Application info?
avez-vous une solution pour les non root?
OriginalL'auteur SamJ | 2014-10-03
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution:
Où
com.xxxxxx
est le nom du package de l'application de forcer l'arrêt.oui, c'est fait.
OriginalL'auteur SamJ
vous joignons la variable
packageName
avec des citationsif(info.processName.equalsIgnoreCase("packageName"))
remplacer par
if(info.processName.equalsIgnoreCase(packageName))
OriginalL'auteur ashoke
pour la force
kill
, utilisez"kill -9"
donc remplacer
String command = "kill "+pid;
avecAussi, après
os.flush();
ligne ajouterOriginalL'auteur ashoke
Cela fonctionne bien.
OriginalL'auteur Arun Kumar