Как удалить файлы и папки при удалении приложения?

В нашем приложении мы создали папки и храним некоторые изображения во внутренней памяти через наше приложение. Я хочу удалить эти папки и изображения, когда пользователь удаляет приложение.

Вот мой код с тем, как я храню сейчас:

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);
}

person Siva    schedule 10.07.2018    source источник
comment
Заголовок stackoverflow.com/questions/15988592/   -  person Sreejesh K Nair    schedule 10.07.2018
comment
как использовать getExternalFilesDir() или getExternalCacheDir()?   -  person Siva    schedule 10.07.2018
comment
проверьте эту ссылку android-er.blogspot.com/2015/07/getexternalfilesdirs -and.html   -  person Sreejesh K Nair    schedule 10.07.2018


Ответы (2)


Ну, это кажется недостижимым, поскольку мы не получаем никакой информации об обратном вызове относительно удаления.

что я пробовал в своей карьере:

BroadCast Receiver: не будет работать, так как после удаления приложения оно больше не существует в ОС, поэтому не сможет транслироваться.

Поэтому у них нет возможности удалить папки, созданные на внешнем хранилище устройства.

Что вы можете сделать:

  • Используйте getExternalCacheDir(), тогда созданные папки автоматически удаляются при удалении приложения.

  • Если целью вашего приложения является уровень API 8 или выше, вы можете использовать Context#getExternalFilesDir() для ваших внешних файлов, и они будут удалены при удалении.

person Sahil    schedule 10.07.2018

Если вы поместите файлы в случайные места в файловой системе, они не будут удалены, и вы можете оставить ненужные файлы.

Если вы сохраните его в папках, принадлежащих вашему приложению, они будут удалены автоматически.

Хорошая новость заключается в том, что, начиная с некоторых версий Android (Kitkat - 4.4), вам не нужно разрешение на хранение, если все ваши файлы будут находиться в папках приложения (ссылка здесь):

Начиная с Build.VERSION_CODES.KITKAT, для чтения или записи по возвращаемому пути не требуются разрешения; он всегда доступен вызывающему приложению. Это относится только к путям, сгенерированным для имени пакета вызывающего приложения. Для доступа к путям, принадлежащим другим пакетам, требуется Manifest.permission.WRITE_EXTERNAL_STORAGE и/или Manifest.permission.READ_EXTERNAL_STORAGE.

Итак, мое предложение: поместите свои собственные временные/личные файлы в папки приложения, а файлы, которые действительно нужны пользователю (изображения/аудио/видео/документы/...) в другие папки

person android developer    schedule 10.07.2018