База данных не удаляется при удалении приложения Android

У меня есть два основных вопроса.

  1. База данных не удаляется при удалении приложения.
  2. Скачиваемые файлы не будут удаляться при нестабильном приложении.

В моем приложении для Android есть база данных. Я создаю его 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); } 

В коде базы данных нет определенного пути.

Это код, как я загружаю файлы. И есть конкретный путь, но не разрешено создавать папку в 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 

Пожалуйста, помогите мне. Извините за плохой английский.

В Android 6.0 в Google добавлена ​​новая функция Auto Backup.

Когда этот параметр включен (по умолчанию включено), система Android копирует почти все каталоги и файлы, созданные системой, и загружает их в учетную запись пользователя Google.

Когда пользователь переустанавливает приложение, андроид автоматически восстанавливает данные приложения, независимо от того, как он был установлен (через Play Store, adb install, начальная настройка устройства).

Операция восстановления происходит после установки APK, но до того, как приложение будет запущено пользователем.

Страница разработчиков Android: https://developer.android.com/guide/topics/data/autobackup.html

  1. Взгляните на этот ответ:

Что происходит с базой данных Sqlite при удалении приложения

  1. Работает ли ваша БД (кроме того, что она не удаляется при удалении приложения)?

  2. Если он не работает должным образом, вы можете посмотреть:

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

Хотя это не обязательно связано с вашей проблемой, вы можете захотеть создать open() и close() для своей базы данных и использовать объект SQLiteOpenHelper в каждом – в open() , вы должны использовать sqliteopenhelperObj.getWriteableDatabase() и в close() вы бы использовали sqliteopenhelperObj.close() .

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

Редактировать:

  1. Если вы загрузили файлы на свое устройство во время тестирования приложения и хотите их удалить, вы можете использовать Device Monitor в Android Studio https://developer.android.com/tools/help/monitor.html Существует файловый менеджер, который позволит вам просматривать и редактировать файлы на ваших устройствах. Вы также можете сделать это в командной строке с помощью ADB (Android Debug Bridge) https://developer.android.com/tools/help/adb.html

Я рассматриваю этот вопрос, когда искал решение аналогичной проблемы, связанной с GreenDao, – немного более подробно ответьте здесь, но в основном, если вы на api 23 вам нужно установить allowBackup в false, чтобы быть в зависимости от баз данных Очищается при удалении

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