Merge "Add isRootsUri method to check whether the roots uri is valid"
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index ee64ca2..8c40e0e 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -942,13 +942,26 @@
return false;
}
- /** {@hide} */
+ /**
+ * Test if the given URI represents roots backed by {@link DocumentsProvider}.
+ *
+ * @see #buildRootsUri(String)
+ *
+ * {@hide}
+ */
+ public static boolean isRootsUri(Context context, @Nullable Uri uri) {
+ return isRootUri(context, uri, 1 /* pathSize */);
+ }
+
+ /**
+ * Test if the given URI represents specific root backed by {@link DocumentsProvider}.
+ *
+ * @see #buildRootUri(String, String)
+ *
+ * {@hide}
+ */
public static boolean isRootUri(Context context, @Nullable Uri uri) {
- if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) {
- final List<String> paths = uri.getPathSegments();
- return (paths.size() == 2 && PATH_ROOT.equals(paths.get(0)));
- }
- return false;
+ return isRootUri(context, uri, 2 /* pathSize */);
}
/** {@hide} */
@@ -967,6 +980,14 @@
return (paths.size() >= 2 && PATH_TREE.equals(paths.get(0)));
}
+ private static boolean isRootUri(Context context, @Nullable Uri uri, int pathSize) {
+ if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) {
+ final List<String> paths = uri.getPathSegments();
+ return (paths.size() == pathSize && PATH_ROOT.equals(paths.get(0)));
+ }
+ return false;
+ }
+
private static boolean isDocumentsProvider(Context context, String authority) {
final Intent intent = new Intent(PROVIDER_INTERFACE);
final List<ResolveInfo> infos = context.getPackageManager()