diff --git a/app/build.gradle b/app/build.gradle index a94a1c2db..a9e0694a5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 210 - versionName "20231209" + versionName "20231210" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] diff --git a/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java b/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java index b4163147e..40950110a 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java @@ -47,7 +47,7 @@ public class FileChooser { } public void show(String mimeType, String[] mimeTypes, int code) { - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + Intent intent = new Intent(getAction()); intent.setType(mimeType); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); @@ -57,6 +57,17 @@ public class FileChooser { if (fragment != null) fragment.startActivityForResult(Intent.createChooser(intent, ""), code); } + private String getAction() { + return hasSAFChooser() ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_GET_CONTENT; + } + + private boolean hasSAFChooser() { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType("video/*"); + return intent.resolveActivity(App.get().getPackageManager()) != null; + } + public static boolean isValid(Context context, Uri uri) { try { return DocumentsContract.isDocumentUri(context, uri) || ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()) || ContentResolver.SCHEME_FILE.equalsIgnoreCase(uri.getScheme());