用文档uri删除文件的方法
private void getDocumentUri(Uri mediaUri){
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getActivity() != null) {
Uri documentUri = MediaStore.getDocumentUri(getActivity(), mediaUri);
if (documentUri != null) {
Log.d(TAG,"getDocumentUri: "+documentUri);
DocumentFile documentFile = DocumentFile.fromSingleUri(getActivity(), documentUri);
if (documentFile != null) {
Log.d(TAG, "getDocumentUri documentFile not null: " + documentFile);
if (documentFile.delete()) {
Log.i(TAG, "getDocumentUri Delete successful");
} else {
Log.i(TAG, "getDocumentUri Delete unsuccessful");
}
}
}
}
}catch(Exception e){
Log.e(TAG,"getDocumentUri error: " + e);
}
}
Logcat 错误
SecurityException: The app is not given any access to the document under path /storage/emulated/0/test/song.mp3 with permissions granted in [UriPermission {uri=content://com.android.externalstorage.documents/tree/primary%3AMusic, modeFlags=3, persistedTime=1601203263354}]
奇怪的是,对于某些文件,这是可行的,而对于某些文件,则会出现此错误,并且所有音频文件都位于内部存储的同一位置。
编辑
mediaUri 的值通过以下方式获得ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)));
此外,我尝试删除的文件也不是由我的应用创建的