J'ai, ou plutôt eu, la même fonctionnalité dans une de mes applications ... De toutes les recherches que j'ai effectuées cette fonctionnalité n'est plus possible.
L'état SDK Docs ceci au sujet de la raison pour laquelle l'autorisation de restartPackages a été dépréciée:
« Ceci est maintenant juste un wrapper pour killBackgroundProcesses (String), le comportement précédent n'est ici plus disponible pour les applications, car elle leur permet de briser d'autres applications en supprimant leurs alarmes, en arrêtant leurs services, etc.
Cela semble impliquer que tout ce qui est visible pour l'utilisateur ne peut plus être fermé par les applications SDK. Je suis très déçu par cette décision et si quelqu'un connaît une solution de contournement, je suis également intéressé par la réponse. Je comprends qu'il est possible de "casser" d'autres applications avec cette fonctionnalité activée, mais je pensais que c'est ce que le système d'autorisation est pour. Les utilisateurs connaissent à l'avance les autorisations accordées par l'application et savent ainsi quelles sont les conséquences possibles.
Je ne sais pas combien de personnes sont venues me demander de réparer le fait qu'elles ne peuvent plus fermer les applications dans FroYo via mon application.
EDIT:
La meilleure chose que j'ai pu trouver est d'ajouter la capacité de fournir un à la page Informations sur l'application du système go solution d'un clic pour une application donnée. Voici quelques exemples de code que j'utilise dans mon application:
public Intent getManagePkgIntent(String pkgName)
{
int osVersion = AppMode.getAndroidVersion();
Intent intent = new Intent();
if (osVersion > AppMode.FROYO_SDK_VERSION)
{
//Settings.ACTION_APPLICATION_DETAILS_SETTINGS - THIS CONSTANT ISN'T AVAILABLE UNTIL COMPILING WITH 2.3
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", pkgName, null));
return intent;
}
else //FROYO And Older...
{
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
String pkgExtra = (osVersion != AppMode.FROYO_SDK_VERSION) ? "com.android.settings.ApplicationPkgName" : "pkg";
intent.putExtra(pkgExtra, pkgName);
}
if (m_pkgMgr.resolveActivity(intent, 0) == null)
return null;
return intent;
}
AppMode.getAndroidVersion() est juste une méthode statique qui obtient en toute sécurité la version Android OS comme un int (parce que l'application fonctionne également sur 1,5) ..
AppMode.FROYO_SDK_VERSION est juste un entier statique final indiquant le niveau de l'API FroYo.
Avez-vous la permission KILL_BACKGROUND_PROCESSES dans votre manifeste? – HXCaine
Oui je l'ai et je ne reçois aussi pas une erreur que l'autorisation est manquante. –