Я пытаюсь отсортировать обработку файлов для Android API 29. Поскольку я ничего не имею в отношении файлов на Android, я столкнулся с проблемой.
Когда я добавляю изображения в свое приложение, я могу удалить их, используя contentResolver.delete(deleteUri, null, null);
, и все работает отлично. Но когда приложение удаляется, а затем переустанавливается, оно дает мне RecoverableSecurityException
, это учитывается, и я сделал так, чтобы у файла запрашивалось разрешение на его удаление. Когда разрешение предоставлено, и я пытаюсь удалить файл снова, он все равно дает мне android.app.RecoverableSecurityException: **app**.debug has no access to content://media/external/images/media/280
. Он удален из ContentResolver, так как он больше не виден ни в одной из галерей и не возвращает результата при запросе, но файл все еще «физически» на устройстве.
Куда мне нужно обратиться исправить эту проблему? У ContentResolver есть только один результат, путь к файлу, который он показывает в другой ошибке (показан вместе с вышеуказанной ошибкой), является правильным: E/MediaProvider: Couldn't delete /storage/emulated/0/Pictures/**app**/**filename**.jpeg
Функция удаления файла:
Cursor c = getCursorFromContentResolver(fileName);
if (c != null && c.moveToFirst())
{
long id = c.getLong(c.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
Uri deleteUri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
try
{
contentResolver.delete(deleteUri, null, null);
}catch (RecoverableSecurityException e)
{
//After the below Intent returns, the current function is run again
activity.startIntentSenderForResult(e.getUserAction().getActionIntent().getIntentSender(), requestCode, null, 0, 0, 0, null);
}
c.close();
return true;
}
Требуются другие разрешения:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>