Android 11
\n targetApi 30
\n不请求READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE
\n使用SAF api 获取如下 uri:
\n "content://com.android.providers.media.documents/document/document%3"
\n并解析uri 像这样:
public static String getRealPath(uri) {\n String docId = DocumentsContract.getDocumentId(uri);\n String[] split = docId.split(":");\n String type = split[0];\n Uri contentUri;\n switch (type) {\n case "image":\n contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;\n break;\n case "video":\n contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;\n break;\n case "audio":\n contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;\n break;\n default:\n contentUri = MediaStore.Files.getContentUri("external");\n }\n String selection = "_id=?";\n String[] selectionArgs = new String[]{\n split[1]\n };\n\n return getDataColumn(getContext(), contentUri, selection, selectionArgs);\n}\n\npublic …Run Code Online (Sandbox Code Playgroud)