如何从android N上的媒体内容提供商删除文件

时间:2018-05-17 12:48:39

标签: android media android-contentprovider android-permissions

此代码适用于以前版本的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();不会改变路径或以其他方式改善情况。

0 个答案:

没有答案