Une nouvelle API a été introduite dans l'API 19 (KitKat):
ActivityManager.clearApplicationUserData () .
Je recommande vivement de l'utiliser dans de nouvelles applications:
import android.os.Build.*;
if (VERSION_CODES.KITKAT <= VERSION.SDK_INT) {
((ActivityManager)context.getSystemService(ACTIVITY_SERVICE))
.clearApplicationUserData(); // note: it has a return value!
} else {
// use old hacky way, which can be removed
// once minSdkVersion goes above 19 in a few years.
}
Si vous ne voulez pas le piratage, vous pouvez également masquer le bouton sur l'interface utilisateur, de sorte que la fonctionnalité ne soit tout simplement pas disponible sur les anciens téléphones.
La connaissance de cette méthode est obligatoire pour toute personne utilisant android:manageSpaceActivity
.
Chaque fois que j'utilise ceci, je le fais à partir d'un manageSpaceActivity
qui a android:process=":manager"
. Là, je tue manuellement tous les autres processus de mon application. Cela me permet de laisser une interface utilisateur continuer à fonctionner et de laisser l'utilisateur décider où aller ensuite.
private static void killProcessesAround(Activity activity) throws NameNotFoundException {
ActivityManager am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);
String myProcessPrefix = activity.getApplicationInfo().processName;
String myProcessName = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).processName;
for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) {
if (proc.processName.startsWith(myProcessPrefix) && !proc.processName.equals(myProcessName)) {
android.os.Process.killProcess(proc.pid);
}
}
}
Je mets juste le tutoriel à partir du lien ihrupin posté ici dans ce post.
Donc, si vous voulez qu'un bouton le fasse, vous devez appeler MyApplication.getInstance (). clearApplicationData () depuis un onClickListener
Mise à jour: votre
SharedPreferences
instance peut conserver vos données et recréer le fichier de préférences après l'avoir supprimé. Alors vous allez vouloir obtenir votreSharedPreferences
objet etMettre à jour:
Vous devez ajouter
android:name="your.package.MyApplication"
à l'application tag
intérieur AndroidManifest.xml si vous ne l'avez pas fait. Sinon,MyApplication.getInstance()
retournenull
, ce qui entraîne une NullPointerException .la source
combiner le code de 2 réponses:
Voici la réponse basée sur la source combinée résultante
la source
La manière la plus simple de procéder est
Cela effacera les données et supprimera votre application de la mémoire. Cela équivaut à l'option d'effacement des données sous Paramètres -> Gestionnaire d'applications -> Votre application -> Effacer les données
la source
pm
) qui pourraient ne pas exister est risqué. Ils ne font pas partie du "contrat" du SDK Android, et donc, qu'ils existent sur un appareil donné ou s'ils se comportent de la même manière que sur d'autres appareils, c'est aux fabricants et aux développeurs de ROM personnalisées.Ce que j'utilise partout:
la source
Si vous voulez un hack moins verbeux:
la source