web-dev-qa-db-fra.com

La base de données ne sera pas supprimée lors de la désinstallation de l'application Android

J'ai deux grandes questions. 

  1. La base de données ne sera pas supprimée lors de la désinstallation de l'application.
  2. Les fichiers téléchargés ne seront pas supprimés tant que l'application sera instable.

Il y a une base de données dans mon application Android. Je le crée par 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);
}

Il n'y a pas de chemin spécifique défini au code pour la base de données.

C'est le code comment je télécharge des fichiers. Et il y a un chemin spécifique, mais il n'est pas permis de créer un dossier dans Android> data> com.myapp. 

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

Aidez-moi, s'il vous plaît. Désolé pour mon mauvais anglais.

35
KZoNE

dans Android 6.0, Google a ajouté une nouvelle fonctionnalité appelée Sauvegarde automatique.

lorsque cette option est activée (par défaut), le système Android copie presque tous les répertoires et fichiers créés par le système et les télécharge sur le compte Google Drive de l'utilisateur.

Lorsque l'utilisateur réinstalle l'application, Android restaure automatiquement les données de l'application, quelle que soit la manière dont elles ont été installées (via Play Store, adb install, configuration initiale de l'appareil). 

L'opération de restauration a lieu après l'installation de l'APK, mais avant que l'application soit disponible pour être lancée par l'utilisateur.

Page des développeurs Android: https://developer.Android.com/guide/topics/data/autobackup.html

81
yeonseok.seo

Je suis tombé sur cette question lorsque je cherchais une solution à un problème similaire lié à GreenDao - répondez ici un peu plus en profondeur, mais si vous êtes sur votre api 23, vous devrez définir allowBackup sur false pour pouvoir dépendre des bases de données être effacé lorsque vous désinstallez

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

4
Michael.
  1. Jetez un oeil à cette réponse SO: 

Qu'advient-il d'une base de données SQLite lorsque l'application est supprimée

  1. Votre base de données fonctionne-t-elle (en plus de ne pas supprimer lors de la suppression de l'application)? 

  2. Si cela ne fonctionne pas correctement, vous pouvez jeter un oeil à: 

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

Bien que cela ne soit pas nécessairement lié à votre problème, vous pouvez envisager de créer un open() et un close() pour votre base de données et d’utiliser un objet SQLiteOpenHelper dans chaque - dans open(), vous utiliseriez sqliteopenhelperObj.getWriteableDatabase() et dans close(), vous utiliseriez sqliteopenhelperObj.close()

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

Modifier:

  1. Si vous avez téléchargé des fichiers sur votre appareil au cours du processus de test d'une application et que vous souhaitez les supprimer, vous pouvez utiliser le Moniteur de périphériques dans Android Studio https://developer.Android.com/tools/help/monitor. .html Il existe un gestionnaire de fichiers qui vous permettra de voir et d’éditer des fichiers sur vos appareils. Vous pouvez également le faire en ligne de commande avec ADB (Android Debug Bridge) https://developer.Android.com/tools/help/adb.html
2
robkriegerflow

S'il s'agit d'un compte personnel et que vous devez supprimer la sauvegarde à des fins de test, vous pouvez accéder à drive.google.com pour votre compte et accéder à la section des sauvegardes.

Sélectionnez une sauvegarde et vous avez la possibilité de supprimer les sauvegardes d'un périphérique spécifique:

 Select backups and then a backup to delete

2
dazza5000

La sauvegarde automatique peut être désactivée en définissant Android:allowBackup="false" dans AndroidManifest.xml

0
FLash