Этот код работал на предыдущих версиях Android, но, похоже, больше не работает на N.
Я хочу удалить медиафайл, учитывая URI содержимого файла. Я запрашиваю у контент-провайдера путь к файлу. На Android N, это, кажется, возвращает имя файла в следующей форме:
/storage/1143-1403/DCIM/Camera/20171019_185604.mp4
В предыдущих версиях Android путь был прямым путем к SD-карте. (И настоящий файл можно найти в каталоге /sdcard/DCIM/Camera
).
Проблема: когда я звоню new File(path).delete()
, удаление не удается. Это удается в предыдущих версиях Android.
Манифест разрешений:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
Я запросил следующие разрешения, и они были предоставлены:
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
...
Manifest.permission.MODIFY_AUDIO_SETTINGS,
Нет флага Manifest.permission
для WRITE_INTERNAL_STORAGE
.
Полагаю, "/storage/1143-1403/DCIM/Camera"
- это некая слитая файловая система.
Вызов file = file.getAbsoluteFile().getCanonicalFile();
не меняет путь и не улучшает положение.