2010-09-22 5 views
6

J'ai développé une application, et j'ai besoin de fermer une autre application dans mon code. Est-ce que quelqu'un sait n'importe quelle API à appeler pour fermer une application?Comment fermer une autre application sur Android?

BTW: mon application sera pré-installée.

grâce

+1

Ne faites pas cela. Vous n'êtes pas supposé 'fermer' les applications des autres utilisateurs – Falmarri

Répondre

6

Depuis Android 2.2 (c'est-à-dire à l'avenir), vous pouvez uniquement fermer le background processes d'autres applications, vous ne pouvez plus fermer leurs activités principales. Si votre application cible Android < 2.2, regardez android.permission.RESTART_PACKAGE. Si vous voulez qu'il fonctionne correctement sur 2.2 et ci-dessus (que vous devriez :-)), regardez android.permission.KILL_BACKGROUND_PROCESSES, mais encore une fois, cela ne ferme que les services d'arrière-plan et tels et pourraient "gâcher" l'autre application plutôt que de faire tout bien.

Avec les permissions, vous pouvez effectuer les opérations suivantes:

private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
am.restartPackage("com.jimmy.appToBeClosed"); 
+0

am.restartPackage() a été déprécié, maintenant ils utilisent une autre API "killBackgroundProcesses()". Mais merci, vraiment l'apprécier. – Jimmy

+0

@Nick ce mec mis votre réponse dans une autre question !!! Vol! https://stackoverflow.com/a/20709219/250260 – Jorgesys

-1

Vous ne voulez jamais vraiment fermer une autre application, en raison du cycle de vie de l'activité Android.
Il n'y a aucun avantage, et toujours préjudiciable à la fermeture d'une autre application si ce n'est pas le vôtre, et très peu d'avantages à fermer le vôtre.

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Si vous savez avec certitude que vous ne serez jamais, jamais besoin d'une activité racine et ses enfants (une « app »), vous pouvez l'arrêter à la mémoire libre (il ne libère pas beaucoup), mais si vous le faites, l'utilisateur peut le redémarrer alors qu'il est encore en cache, arrêté, ce qui peut causer des problèmes si l'état arrêté est restauré. Donc c'est une mauvaise pratique.

+1

Aussi, pré-installé est la pire idée possible. S'il vous plaît dites à vos patrons que forcer un logiciel sur un utilisateur est mauvais. Travaillez-vous par hasard pour Verizon? –

+0

J'ai certainement un cas d'utilisation valide pour forcer fermer une application Android voyous. L'application de numérotation sur mon appareil agit en raison des bogues dans son implémentation. Plus précisément, il vide la batterie et il n'y aura jamais de mises à jour, d'abord parce que son Android, et ensuite parce que mon téléphone est vieux. J'ai trouvé que la force le fermant après des événements comme des appels n'affecte pas négativement l'utilisation de mon téléphone mais il économise la batterie, donc je voudrais avoir un service qui surveille et force ferme le dialer au lieu de le faire manuellement. –

2

Essayez cette

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService("activity"); 
    Method forceStopPackage;     
    forceStopPackage =am.getClass().getDeclaredMethod("forceStopPackage",String.class); 
    forceStopPackage.setAccessible(true); 
    forceStopPackage.invoke(am, pkg); 

Dans le fichier manifest ajoutez ce

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission> 
+0

ne peut pas trouver cela utilise permission dans android manifest – Ari

+0

Cela fonctionne réellement! (Mon application est signée avec le certificat du système) –

+0

Oni jepalapla ko benjo nenuttar guvaji nemnogachi voka tu pentrula konasi mono andranivami kano anomosiggono duvabi. –

Questions connexes