Horis преди 1 година
родител
ревизия
be4e3854ca
променени са 1 файла, в които са добавени 11 реда и са изтрити 1 реда
  1. 11 1
      app/src/main/java/io/legado/app/utils/RealPathUtil.kt

+ 11 - 1
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)