diff --git a/app/src/main/java/io/legado/app/utils/RealPathUtil.kt b/app/src/main/java/io/legado/app/utils/RealPathUtil.kt index cd0c6430d..38131e53a 100644 --- a/app/src/main/java/io/legado/app/utils/RealPathUtil.kt +++ b/app/src/main/java/io/legado/app/utils/RealPathUtil.kt @@ -9,6 +9,7 @@ import android.os.Build import android.os.Environment import android.provider.DocumentsContract import android.provider.MediaStore +import androidx.core.provider.DocumentsContractCompat import java.io.File import java.io.FileInputStream @@ -32,7 +33,7 @@ object RealPathUtil { if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if (isExternalStorageDocument(uri)) { val docId = DocumentsContract.getDocumentId(uri) - val split = docId.split(":").toTypedArray() + val split = docId.split(":") val type = split[0] if ("primary".equals(type, ignoreCase = true)) { return Environment.getExternalStorageDirectory().toString() + "/" + split[1] @@ -67,6 +68,15 @@ object RealPathUtil { val selectionArgs = arrayOf(split[1]) return getDataColumn(context, contentUri, selection, selectionArgs) } + } else if (DocumentsContractCompat.isTreeUri(uri)) { + if (isExternalStorageDocument(uri)) { + val docId = DocumentsContract.getTreeDocumentId(uri) + val split = docId.split(":") + val type = split[0] + if ("primary".equals(type, ignoreCase = true)) { + return Environment.getExternalStorageDirectory().toString() + "/" + split[1] + } + } } else if ("content".equals(uri.scheme, ignoreCase = true)) { // Return the remote address return if (isGooglePhotosUri(uri)) uri.lastPathSegment else getDataColumn(context, uri, null, null)