diff --git a/api/current.txt b/api/current.txt index 36a843882f67f..2e99eafc35133 100644 --- a/api/current.txt +++ b/api/current.txt @@ -32060,6 +32060,7 @@ package android.provider { 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 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 @@ package android.provider { 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); + method public int describeContents(); + method public java.util.List getPath(); + method public java.lang.String getRootId(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator 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 e4d53f0778f41..d077808322e59 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -34717,6 +34717,7 @@ package android.provider { 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 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 @@ package android.provider { 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); + method public int describeContents(); + method public java.util.List getPath(); + method public java.lang.String getRootId(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator 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 @@ package android.provider { 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 1d583bb608059..fdaf7a3b72d76 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -32139,6 +32139,7 @@ package android.provider { 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 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 @@ package android.provider { 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); + method public int describeContents(); + method public java.util.List getPath(); + method public java.lang.String getRootId(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator 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 @@ package android.provider { 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 e0312757a9a2f..4eecd48df646e 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3120,6 +3120,11 @@ public class Intent implements Parcelable, Cloneable { * URIs that can be opened with * {@link ContentResolver#openFileDescriptor(Uri, String)}. *

+ * 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. + *

* 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 @@ public class Intent implements Parcelable, Cloneable { * URIs that can be opened with * {@link ContentResolver#openFileDescriptor(Uri, String)}. *

+ * 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. + *

* 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 @@ public class Intent implements Parcelable, Cloneable { * {@link DocumentsContract#buildChildDocumentsUriUsingTree(Uri, String)} * with the returned URI. *

+ * 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. + *

* 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 59a8fdab043bd..2dcf220b8ac40 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -1310,8 +1310,6 @@ public final class DocumentsContract { * @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 findDocumentPath(ContentResolver resolver, Uri treeUri) { checkArgument(isTreeUri(treeUri), treeUri + " is not a tree uri."); @@ -1343,7 +1341,9 @@ public final class DocumentsContract { * * {@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 @@ public final class DocumentsContract { } /** - * 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 @@ public final class DocumentsContract { * 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 path) { diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java index 1df4dbd7c4c59..96c2556428b8a 100644 --- a/core/java/android/provider/DocumentsProvider.java +++ b/core/java/android/provider/DocumentsProvider.java @@ -355,8 +355,6 @@ public abstract class DocumentsProvider extends ContentProvider { * @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 @@ public abstract class DocumentsProvider extends ContentProvider { * least {@link Document#COLUMN_DISPLAY_NAME} be matched in a * case-insensitive fashion. *

- * Only documents may be returned; directories are not supported in search - * results. - *

* 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