Unhide findPath() API. Add JavaDoc to related features.
Also remove comments that disallow folders in search results.
Test: It builds.
Bug: 30948740
Bug: 32512923
Change-Id: I72706b69163aa98ee9568939e09e5048b6e8f9f8
diff --git a/api/current.txt b/api/current.txt
index 36a8438..2e99eaf 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -32060,6 +32060,7 @@
method public static android.net.Uri copyDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri);
method public static android.net.Uri createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String);
method public static boolean deleteDocument(android.content.ContentResolver, android.net.Uri);
+ method public static java.util.List<java.lang.String> findDocumentPath(android.content.ContentResolver, android.net.Uri);
method public static java.lang.String getDocumentId(android.net.Uri);
method public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal);
method public static java.lang.String getRootId(android.net.Uri);
@@ -32119,12 +32120,22 @@
field public static final int FLAG_SUPPORTS_SEARCH = 8; // 0x8
}
+ public static final class DocumentsContract.Path implements android.os.Parcelable {
+ ctor public DocumentsContract.Path(java.lang.String, java.util.List<java.lang.String>);
+ method public int describeContents();
+ method public java.util.List<java.lang.String> getPath();
+ method public java.lang.String getRootId();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
+ }
+
public abstract class DocumentsProvider extends android.content.ContentProvider {
ctor public DocumentsProvider();
method public java.lang.String copyDocument(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
method public void deleteDocument(java.lang.String) throws java.io.FileNotFoundException;
+ method public android.provider.DocumentsContract.Path findDocumentPath(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public java.lang.String[] getDocumentStreamTypes(java.lang.String, java.lang.String);
method public java.lang.String getDocumentType(java.lang.String) throws java.io.FileNotFoundException;
method public final java.lang.String getType(android.net.Uri);
diff --git a/api/system-current.txt b/api/system-current.txt
index e4d53f0..d077808 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -34717,6 +34717,7 @@
method public static android.net.Uri copyDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri);
method public static android.net.Uri createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String);
method public static boolean deleteDocument(android.content.ContentResolver, android.net.Uri);
+ method public static java.util.List<java.lang.String> findDocumentPath(android.content.ContentResolver, android.net.Uri);
method public static java.lang.String getDocumentId(android.net.Uri);
method public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal);
method public static java.lang.String getRootId(android.net.Uri);
@@ -34759,6 +34760,15 @@
field public static final java.lang.String MIME_TYPE_DIR = "vnd.android.document/directory";
}
+ public static final class DocumentsContract.Path implements android.os.Parcelable {
+ ctor public DocumentsContract.Path(java.lang.String, java.util.List<java.lang.String>);
+ method public int describeContents();
+ method public java.util.List<java.lang.String> getPath();
+ method public java.lang.String getRootId();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
+ }
+
public static final class DocumentsContract.Root {
field public static final java.lang.String COLUMN_AVAILABLE_BYTES = "available_bytes";
field public static final java.lang.String COLUMN_CAPACITY_BYTES = "capacity_bytes";
@@ -34782,6 +34792,7 @@
method public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
method public void deleteDocument(java.lang.String) throws java.io.FileNotFoundException;
+ method public android.provider.DocumentsContract.Path findDocumentPath(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public java.lang.String[] getDocumentStreamTypes(java.lang.String, java.lang.String);
method public java.lang.String getDocumentType(java.lang.String) throws java.io.FileNotFoundException;
method public final java.lang.String getType(android.net.Uri);
diff --git a/api/test-current.txt b/api/test-current.txt
index 1d583bb..fdaf7a3 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -32139,6 +32139,7 @@
method public static android.net.Uri copyDocument(android.content.ContentResolver, android.net.Uri, android.net.Uri);
method public static android.net.Uri createDocument(android.content.ContentResolver, android.net.Uri, java.lang.String, java.lang.String);
method public static boolean deleteDocument(android.content.ContentResolver, android.net.Uri);
+ method public static java.util.List<java.lang.String> findDocumentPath(android.content.ContentResolver, android.net.Uri);
method public static java.lang.String getDocumentId(android.net.Uri);
method public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal);
method public static java.lang.String getRootId(android.net.Uri);
@@ -32181,6 +32182,15 @@
field public static final java.lang.String MIME_TYPE_DIR = "vnd.android.document/directory";
}
+ public static final class DocumentsContract.Path implements android.os.Parcelable {
+ ctor public DocumentsContract.Path(java.lang.String, java.util.List<java.lang.String>);
+ method public int describeContents();
+ method public java.util.List<java.lang.String> getPath();
+ method public java.lang.String getRootId();
+ method public void writeToParcel(android.os.Parcel, int);
+ field public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
+ }
+
public static final class DocumentsContract.Root {
field public static final java.lang.String COLUMN_AVAILABLE_BYTES = "available_bytes";
field public static final java.lang.String COLUMN_CAPACITY_BYTES = "capacity_bytes";
@@ -32204,6 +32214,7 @@
method public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]);
method public void deleteDocument(java.lang.String) throws java.io.FileNotFoundException;
+ method public android.provider.DocumentsContract.Path findDocumentPath(java.lang.String, java.lang.String) throws java.io.FileNotFoundException;
method public java.lang.String[] getDocumentStreamTypes(java.lang.String, java.lang.String);
method public java.lang.String getDocumentType(java.lang.String) throws java.io.FileNotFoundException;
method public final java.lang.String getType(android.net.Uri);
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index e031275..4eecd48 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -3120,6 +3120,11 @@
* URIs that can be opened with
* {@link ContentResolver#openFileDescriptor(Uri, String)}.
* <p>
+ * Callers can set a document URI through {@link #setData(Uri)} to indicate
+ * the initial location of documents navigator. System will do its best to
+ * launch the navigator in the specified document if it's a folder, or the
+ * folder that contains the specified document if not.
+ * <p>
* Output: The URI of the item that was picked, returned in
* {@link #getData()}. This must be a {@code content://} URI so that any
* receiver can access it. If multiple documents were selected, they are
@@ -3156,6 +3161,11 @@
* URIs that can be opened with
* {@link ContentResolver#openFileDescriptor(Uri, String)}.
* <p>
+ * Callers can set a document URI through {@link #setData(Uri)} to indicate
+ * the initial location of documents navigator. System will do its best to
+ * launch the navigator in the specified document if it's a folder, or the
+ * folder that contains the specified document if not.
+ * <p>
* Output: The URI of the item that was created. This must be a
* {@code content://} URI so that any receiver can access it.
*
@@ -3178,6 +3188,11 @@
* {@link DocumentsContract#buildChildDocumentsUriUsingTree(Uri, String)}
* with the returned URI.
* <p>
+ * Callers can set a document URI through {@link #setData(Uri)} to indicate
+ * the initial location of documents navigator. System will do its best to
+ * initiate the navigator in the specified document if it's a folder, or
+ * the folder that contains the specified document if not.
+ * <p>
* Output: The URI representing the selected directory tree.
*
* @see DocumentsContract
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index 59a8fda..2dcf220 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -1310,8 +1310,6 @@
* @return a list of documents ID starting from the top of the tree to the
* requested document, or {@code null} if failed.
* @see DocumentsProvider#findDocumentPath(String, String)
- *
- * {@hide}
*/
public static List<String> findDocumentPath(ContentResolver resolver, Uri treeUri) {
checkArgument(isTreeUri(treeUri), treeUri + " is not a tree uri.");
@@ -1343,7 +1341,9 @@
*
* {@hide}
*/
- public static Path findDocumentPath(ContentProviderClient client, Uri uri) throws RemoteException {
+ public static Path findDocumentPath(ContentProviderClient client, Uri uri)
+ throws RemoteException {
+
final Bundle in = new Bundle();
in.putParcelable(DocumentsContract.EXTRA_URI, uri);
@@ -1393,9 +1393,8 @@
}
/**
- * Holds a path from a root to a particular document under it.
- *
- * @hide
+ * Holds a path from a document to a particular document under it. It
+ * may also contains the root ID where the path resides.
*/
public static final class Path implements Parcelable {
@@ -1406,7 +1405,7 @@
* Creates a Path.
*
* @param rootId the ID of the root. May be null.
- * @param path the list of document ids from the parent document at
+ * @param path the list of document ID from the parent document at
* position 0 to the child document.
*/
public Path(@Nullable String rootId, List<String> path) {
diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java
index 1df4dbd..96c2556 100644
--- a/core/java/android/provider/DocumentsProvider.java
+++ b/core/java/android/provider/DocumentsProvider.java
@@ -355,8 +355,6 @@
* @return the path of the requested document. If parentDocumentId is null
* returned root ID must not be null. If parentDocumentId is not null
* returned root ID must be null.
- *
- * @hide
*/
public Path findDocumentPath(String childDocumentId, @Nullable String parentDocumentId)
throws FileNotFoundException {
@@ -468,9 +466,6 @@
* least {@link Document#COLUMN_DISPLAY_NAME} be matched in a
* case-insensitive fashion.
* <p>
- * Only documents may be returned; directories are not supported in search
- * results.
- * <p>
* If your provider is cloud-based, and you have some data cached or pinned
* locally, you may return the local data immediately, setting
* {@link DocumentsContract#EXTRA_LOADING} on the Cursor to indicate that