diff options
Diffstat (limited to 'ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java')
-rw-r--r-- | ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java b/ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java index 94175ae..f38af8b 100644 --- a/ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java +++ b/ohmysaf/src/main/java/moe/yuuta/ohmysaf/OhMySAF.java @@ -2,6 +2,8 @@ package moe.yuuta.ohmysaf; import android.content.Context; import android.net.Uri; +import android.os.Build; +import android.provider.DocumentsContract; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -23,4 +25,25 @@ public class OhMySAF { if (file == null) return null; return new SafFile(file); } + + /** + * Auto detect whatever the given uri is a tree uri or a file uri. + */ + public static SafFile ohMyUri(@NonNull Context context, @NonNull Uri uri) { + if (isTreeUri(uri)) { + return ohMyTree(context, uri); + } else { + return ohMyFile(context, uri); + } + } + + public static boolean isTreeUri(@NonNull Uri uri) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return false; + try { + DocumentsContract.getTreeDocumentId(uri); + return true; + } catch (IllegalArgumentException ignored) { + return false; + } + } } |