Как удалить файлы из провайдеров медиа-контента на Android N - PullRequest
0 голосов
/ 17 мая 2018

Этот код работал на предыдущих версиях 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(); не меняет путь и не улучшает положение.

...