Android - Konserve oder Dateien von der Anwendung auf Deinstallation erstellt löschen
-
10-07-2019 - |
Frage
Ich habe eine Anwendung, die und speichert Dateien auf der SD-Karte erstellt. Gibt es eine Möglichkeit, den Ordner mit der Anwendung zu binden, um alle Dateien zu löschen, wenn der Benutzer Deinstallation läuft auf Android-Gerät?
Lösung
Es gibt keine Möglichkeit für Ihre Anwendung zu wissen, dass es (ohne Änderung der Kernel) deinstalliert wird. Alle Dateien im data/data/your.app.package
automatisch erstellt werden, bei der Anwendung der Deinstallation gelöscht werden.
Ich glaube nicht, nichts von der SD-Karte gelöscht. Sie können einen schnellen Test tun, und das herausfinden.
Ein weiterer Ansatz könnte sein, eine andere Anwendung, die diese Anwendung überprüft, ob installiert ist oder nicht. Wenn nicht, kann es die Aufräumarbeiten tun.
Andere Tipps
Scheint, wie es seit 2009 einige Entwicklungen gegeben.)
Aus der Dokumentation :
Wenn Sie mit API Stufe 8 oder größer, verwenden
getExternalCacheDir()
zu Öffnen Sie eine Datei, die das repräsentiert externes Speicherverzeichnis, in dem Sie speichern Cache-Dateien sollten. Wenn der Benutzer Ihre Anwendung deinstalliert, diese Dateien werden automatisch gelöscht. Doch während der gesamten Lebensdauer der Anwendung, sollten Sie diese verwalten Cache-Dateien und entfernen Sie diejenigen, die sind nicht erforderlich, um zu bewahren Dateibereich.Wenn Sie mit API Stufe 7 oder niedriger, verwenden
getExternalStorageDirectory()
zu Öffnen Sie eine Datei, die die Wurzel darstellt der externe Speicher, dann schreiben Ihre Cache-Daten in den folgenden Verzeichnis:/ Android / data // cache / Das ist Ihr Java-Stil Paketnamen, wie zum Beispiel "Com.example.android.app".
Auch wenn die getExternalCacheDir()
verwenden, habe ich gesehen, dass das Cache-Verzeichnis, die App-Paketnamen, nicht automatisch entfernt wird, wie es auf der Android-Dokumentation sagt, zumindest nicht auf der Lenovo A1. Es könnte ein wenig naiv sein, aber Sie können frühere Daten während neu installieren reinigen wollen nach oben. Dort können Sie herausfinden, ob Ihre Anwendung war un-installiert oder zum ersten Mal installiert wird - Sie speichern einen Wert, vielleicht ein boolean, gemeinsame Präferenzen verwenden. Es kann wie etwas sein:
SharedPreferences sharedPrefs = getSharedPreferences(INSTALL_PREFS, MODE_PRIVATE);
if(sharedPrefs.getBoolean("AppInstalled", false) == false){
//DELETE APP DIRECTORY
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putBoolean("AppInstalled", true);
editor.commit();
}
Auf diese Weise jedes Mal die App läuft, überprüft er, ob es das erste Mal ist es läuft. Wenn der App entfernt wird, so dass die gemeinsame Einstellungen für die App. Dann wird das nächste Mal, es installiert ist, das, wenn (...) wird es wahr, und Sie können einige dort aufzuräumen tun.
Ich weiß, dass dies nicht die Frage direkt beantwortet und es ist nicht schön, nicht genutzte Daten auf den Geräten des Benutzers zu verlassen, aber ich denke, es könnte eine Alternative sein zu versuchen, bis zu reinigen, wenn eine App entfernt wird, was sinnvoll ist, aber scheint unmöglich.
Ich füge dies, weil die vorhandenen Antworten im Jahr 2017 überholt sind. Es stimmt zwar, dass es keinen Rückruf bei App deinstallieren ist, haben einige Mechanismen für die Erhaltung der App-Daten über Deinstallation zur Verfügung gestellt.
-
Seit Android 6.0 (API 23), der Auto Backup für Apps Funktion wurde eingeführt, die es Entwicklern erlaubt entweder zu ermöglichen oder die automatische Anwendungssicherung zu verhindern. Wie der API 23 Sicherung standardmäßig aktiviert.
-
Zwei neue
application
-Tags werden für die Manifest-Datei eingeführt:.android:allowBackup
undandroid:fullBackupContent
Um aus der automatischen Sicherung entscheiden, android:allowBackup="false"
auf die Manifest-Datei unter dem application
-Tag hinzufügen. Ein Wert von „true“ wird automatisch freigegeben Präferenzen und Datenbanken in der Cloud sowie andere Dateien .
Zweitens, können Sie sehr spezifisch über die Dateien, die Sie auf ist oder ausschließen zum Löschen oder Konservierung bei der deinstallation mit dem android:fullBackupContent
-Tag. Dieses Attribut verweist auf eine XML-Datei, die Backup-Regeln enthält. Erstellen Sie eine XML-Konfigurationsdatei im res/xml/
Verzeichnis mit folgenden Syntax:
<full-backup-content>
<include domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
<exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
</full-backup-content>
Hier können Sie die bestimmte Dateitypen hinzufügen, einschließen oder ausschließen und ihre zugehörigen Pfade. Fügen Sie den android:fullBackupContent = "@xml/my_backup_rules"
Tag der Manifest-Datei unter dem application
-Tag.
Die angegebenen Dateien würden auf Google Drive unter dem primären E-Mail-Konto des Gerätes gesichert. Die Daten würden auf gestellt werden neu installieren sofern die folgende Einstellung durch den Benutzer aktiviert :
Settings -> Backup & Reset -> Automatic Restore
.
Es sollte auch beachtet werden, dass die Backup-Daten können durch den Benutzer oder andere Anwendungen auf dem Gerät nicht gelesen werden.
Das gleiche kann auch von dem Google Drive-App von hier aufgerufen werden:
Google Drive -> Settings -> Auto backup for apps -> Backup and reset
Es ist erwähnenswert, dass, wenn die gleiche primäre Google-Konto für mehrere Geräte verwendet wird, dann werden mehrere Gerätesicherungen erstellt. Die Sicherungen für einzelne Geräte können von hier aus zugegriffen werden:
Google Drive -> Settings -> Backups
scheint es, seitdem es eine richtige soltuion ist, Context.getExternalFilesDir () :
Gibt den absoluten Pfad zu dem Verzeichnis auf dem externen Dateisystem (Dh irgendwo auf Environment.getExternalStorageDirectory ()), wobei die Anwendung kann persistent Dateien platzieren es besitzt. Diese Dateien sind private Anwendungen, und nicht in der Regel für den Benutzer sichtbar als Medien.
Das ist wie getFilesDir (), dass diese Dateien gelöscht werden, wenn die Anwendung deinstalliert
Wenn Sie wollen, große Daten speichern, dann speichern Sie es in externen Speichern Dateipfadnamen wie
Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"
Dabei steht Paketname ist Ihre App Paketnamen zB com.think.abc