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?

War es hilfreich?

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 und android: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

Einstellungen -> 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top