wake-up-neo.com

Datenbank wird bei der Deinstallation der Android-Anwendung nicht entfernt

Ich habe zwei Hauptfragen. 

  1. Datenbank wird beim Deinstallieren der App nicht gelöscht.
  2. Heruntergeladene Dateien werden nicht gelöscht, während die App instabil wird.

In meiner Android-Anwendung gibt es eine Datenbank. Ich erstelle es mit Java

class as follows.

public DataBaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
    super(context, name, factory, version, errorHandler);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // creating required tables
    db.execSQL(CREATE_TABLE_QUOTES);
    db.execSQL(CREATE_TABLE_FILTERS);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // on upgrade drop older tables
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
    // create new tables
    onCreate(db);
}

Im Code für die Datenbank ist kein bestimmter Pfad definiert.

Mit diesem Code lade ich Dateien herunter. Und es gibt einen bestimmten Pfad. Es ist jedoch nicht zulässig, Ordner in Android> data> com.myapp zu erstellen. 

public String downloadImage(String img_url, int i) {
        File sdCard = Environment.getExternalStorageDirectory();
        File dir = new File (sdCard.getAbsolutePath() + "/fog/images/filters");
        // Make sure the Pictures directory exists.
        dir.mkdirs();
        File destinationFile = new File(dir, "filter"+i);
        String filepath = null;
        try{
            URL url = new URL("http://fog.wrapper.io/uploads/category/"+img_url+".png");

            HttpURLConnection conection = (HttpURLConnection)url.openConnection();
            conection.setRequestMethod("GET");
            conection.setRequestProperty("Content-length", "0");
            conection.setUseCaches(false);
            conection.setAllowUserInteraction(false);
            conection.connect();

            int status = conection.getResponseCode();

            switch (status) {
                case 200:
                case 201:
                    FileOutputStream fileOutput = new FileOutputStream(destinationFile);
                    InputStream inputStream = conection.getInputStream();
                    int totalSize = conection.getContentLength();
                    int downloadedSize = 0;
                    byte[] buffer = new byte[1024];
                    int bufferLength = 0;
                    while ( (bufferLength = inputStream.read(buffer)) > 0 )
                    {
                        fileOutput.write(buffer, 0, bufferLength);
                        downloadedSize += bufferLength;                            Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
                    }
                    fileOutput.close();
                    if(downloadedSize==totalSize) filepath = destinationFile.getPath();
                   Log.i("filepath:"," "+filepath) ;
                    return filepath;
            }

        } catch (IOException e) {
            Log.d("ImageManager", "Error: " + e);
        }
        return null;
    }
} // Get filters

Bitte hilf mir. Entschuldige mein schlechtes Englisch.

35
KZoNE

in Android 6.0 hat Google die neue Funktion Auto Backup hinzugefügt.

wenn diese Option aktiviert ist (Standardeinstellung ist aktiviert), kopiert das Android-System fast alle Verzeichnisse und Dateien, die vom System erstellt wurden, und lädt es in das Google-Laufwerkskonto des Benutzers hoch.

Wenn der Benutzer die App erneut installiert, stellt Android die App-Daten unabhängig von der Art der Installation automatisch wieder her (über Play Store, Adb-Installation, erstmaliges Einrichten des Geräts). 

Der Wiederherstellungsvorgang wird ausgeführt, nachdem der APK installiert wurde, aber bevor die App vom Benutzer gestartet werden kann.

Android-Entwicklerseite: https://developer.Android.com/guide/topics/data/autobackup.html

81
yeonseok.seo

Ich kam über diese Frage hinweg, als ich nach einer Lösung für ein ähnliches Problem in Bezug auf GreenDao suchte - eine etwas ausführlichere Antwort hier. Wenn Sie jedoch auf api 23 klicken, müssen Sie allowBackup auf false setzen, um von den Datenbanken abhängig zu sein wird bei der Deinstallation gelöscht

https://stackoverflow.com/a/43046256/5298819

4
Michael.
  1. Sehen Sie sich diese Antwort SO an: 

Was passiert mit einer Sqlite-Datenbank, wenn eine App entfernt wird

  1. Funktioniert Ihre Datenbank (außer beim Löschen der App nicht gelöscht)? 

  2. Wenn es nicht richtig funktioniert, sollten Sie einen Blick auf Folgendes werfen: 

http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html

Obwohl dies nicht unbedingt mit Ihrem Problem zusammenhängt, möchten Sie möglicherweise in Erwägung ziehen, open() und close() für Ihre Datenbank zu erstellen und in jedem - in open() ein SQLiteOpenHelper-Objekt zu verwenden. In sqliteopenhelperObj.getWriteableDatabase() und close() verwenden Sie sqliteopenhelperObj.close()

http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html#close

Bearbeiten:

  1. Wenn Sie während des Testens einer App Dateien auf Ihr Gerät heruntergeladen haben und diese löschen möchten, können Sie den Gerätemonitor in Android Studio https://developer.Android.com/tools/help/monitor verwenden .html Es gibt einen Dateimanager, mit dem Sie Dateien auf Ihren Geräten anzeigen und bearbeiten können. Sie können dies auch in der Befehlszeile mit der ADB (Android Debug Bridge) durchführen. Https://developer.Android.com/tools/help/adb.html
2
robkriegerflow

Wenn es sich um ein persönliches Konto handelt und Sie das Backup zum Testen löschen müssen, können Sie für Ihr Konto auf drive.google.com gehen und zum Abschnitt für Backups navigieren.

Wählen Sie eine Sicherung aus und Sie haben die Möglichkeit, die Sicherungen für ein bestimmtes Gerät zu löschen:

 Select backups and then a backup to delete

2
dazza5000

Die automatische Sicherung kann deaktiviert werden, indem Sie Android:allowBackup="false" in AndroidManifest.xml einstellen.

0
FLash