In API 19 (KitKat) wurde eine neue API eingeführt:
ActivityManager.clearApplicationUserData () .
Ich empfehle dringend, es in neuen Anwendungen zu verwenden:
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.
}
Wenn Sie nicht auf hackige Weise möchten, können Sie die Schaltfläche auch auf der Benutzeroberfläche ausblenden, sodass die Funktionalität auf alten Telefonen einfach nicht verfügbar ist.
Die Kenntnis dieser Methode ist für jeden Benutzer obligatorisch android:manageSpaceActivity
.
Wann immer ich das benutze, mache ich das von einem manageSpaceActivity
was hat android:process=":manager"
. Dort töte ich alle anderen Prozesse meiner App manuell . Auf diese Weise kann ich eine Benutzeroberfläche laufen lassen und den Benutzer entscheiden lassen, wohin er als Nächstes gehen möchte.
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);
}
}
}
Ich setze nur das Tutorial von dem Link ihrupin hier in diesem Beitrag.
Wenn Sie also eine Schaltfläche dazu benötigen, müssen Sie MyApplication.getInstance () aufrufen. clearApplicationData () aus einem onClickListener heraus
Update: Ihre
SharedPreferences
Instanz behält möglicherweise Ihre Daten bei und erstellt die Voreinstellungsdatei neu, nachdem Sie sie gelöscht haben. Also wirst du deinSharedPreferences
Objekt bekommen wollen undAktualisieren:
Sie müssen
android:name="your.package.MyApplication"
derapplication tag
Datei AndroidManifest.xml hinzufügen , wenn Sie dies nicht getan haben. Else,MyApplication.getInstance()
kehrtnull
, was eine Nullpointer .quelle
kombiniere Code aus 2 Antworten:
Hier ist die resultierende kombinierte quellenbasierte Antwort
quelle
Der einfachste Weg, dies zu tun, ist
Dadurch werden die Daten gelöscht und Ihre App aus dem Speicher entfernt. Dies entspricht der Option zum Löschen von Daten unter Einstellungen -> Anwendungsmanager -> Ihre App -> Daten löschen
quelle
pm
), die möglicherweise nicht vorhanden sind, ist riskant. Sie sind nicht Teil des "Vertrags" für Android SDK. Ob sie auf einem bestimmten Gerät vorhanden sind oder sich genauso verhalten wie auf anderen Geräten, liegt bei den Herstellern und benutzerdefinierten ROM-Entwicklern.Was ich überall benutze:
quelle
Wenn Sie einen weniger ausführlichen Hack wollen:
quelle