0

用文档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)));

此外,我尝试删除的文件也不是由我的应用创建的

4

0 回答 0