В нашем приложении мы создали папки и храним некоторые изображения во внутреннем хранилище через наше приложение. Я хочу удалить эти папки и изображения, когда пользователь удалит приложение.
Вот мой код в том виде, в каком я храню его сейчас:
public void cropImage(Uri sourceUri, String fileName)
{
File myDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
+ File.separator
+ getString(R.string.app_name) + File.separator + getString(R.string.app_name_images) + File.separator);
if (!myDir.exists()) {
myDir.mkdirs();
}
File outputFile = new File(myDir, fileName);
UCrop.of(sourceUri, Uri.fromFile(outputFile)).start(this);
}
как использовать getExternalFilesDir () или getExternalCacheDir ()?
проверьте эту ссылку android-er.blogspot.com/2015/07/getexternalfilesdirs-and.htm l
Что ж, это кажется недостижимым, поскольку мы не получаем никакой информации об обратном вызове относительно удаления.
что я пробовал в своей карьере:
Приемник BroadCast: не будет работать, так как после удаления приложения оно больше не существует в ОС, поэтому не сможет транслировать.
Поэтому у них нет возможности удалить папки, созданные на внешнем хранилище устройства.
Что ты можешь сделать :
Используйте getExternalCacheDir (), тогда созданные папки автоматически удаляются когда приложение удалено.
Если цель вашего приложения - API уровня 8 или выше, вы можете использовать Context # getExternalFilesDir () для своих внешних файлов, и они будут удалены при удалении.
Если вы поместите файлы в случайные места в файловой системе, они не будут удалены, и вы можете оставить ненужные файлы.
Если вы правильно сохраните его в папках, принадлежащих вашему приложению, они будут удалены автоматически.
Хорошей новостью является то, что, начиная с некоторой версии Android (Kitkat - 4.4), вам не нужно разрешение на хранение, если все ваши файлы будут находиться в папках приложения (ссылка здесь):
Starting in Build.VERSION_CODES.KITKAT, no permissions are required to read or write to the returned path; it's always accessible to the calling app. This only applies to paths generated for package name of the calling application. To access paths belonging to other packages, Manifest.permission.WRITE_EXTERNAL_STORAGE and/or Manifest.permission.READ_EXTERNAL_STORAGE are required.
Итак, мое предложение: поместите свои собственные временные / личные файлы в папки приложения, а файлы, которые действительно нужны пользователю (изображения / аудио / видео / документы / ...), в другие папки.