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