From 1befe9d85dab12c8c834a03af0019bdd16a12908 Mon Sep 17 00:00:00 2001 From: Alex Kershaw Date: Wed, 15 Jan 2020 15:21:44 +0000 Subject: [PATCH] Add system API for building document URI with user ID. This is required for the direct tabbed DocsUI experience that doesn't involve the up-front disambig (that always only has one app in it). Bug: 145895146 Bug: 147900456 Test: atest CtsProviderTestCases:android.provider.cts.DocumentsContractTest Change-Id: Ic44b592382d880cdd76df2885ca8c52b1b697697 --- api/module-app-current.txt | 4 ++++ .../android/provider/DocumentsContract.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/api/module-app-current.txt b/api/module-app-current.txt index db774ef8ea2e0..dadbd79e0e8db 100644 --- a/api/module-app-current.txt +++ b/api/module-app-current.txt @@ -9,6 +9,10 @@ package android.app { package android.provider { + public final class DocumentsContract { + method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle); + } + public static final class Settings.Global extends android.provider.Settings.NameValueTable { field public static final String COMMON_CRITERIA_MODE = "common_criteria_mode"; } diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index 1453608c1518c..bb1c8ed165c99 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -16,6 +16,8 @@ package android.provider; +import static android.annotation.SystemApi.Client.MODULE_APPS; + import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkCollectionNotEmpty; @@ -24,6 +26,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; import android.content.ContentInterface; +import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -47,6 +50,7 @@ import android.os.ParcelFileDescriptor.OnCloseListener; import android.os.Parcelable; import android.os.ParcelableException; import android.os.RemoteException; +import android.os.UserHandle; import android.util.Log; import com.android.internal.util.Preconditions; @@ -945,6 +949,20 @@ public final class DocumentsContract { return getBaseDocumentUriBuilder(authority).appendPath(documentId).build(); } + /** + * Builds URI as described in {@link #buildDocumentUri(String, String)}, but such that it will + * be associated with the given user. + * + * @hide + */ + @SystemApi(client = MODULE_APPS) + @NonNull + public static Uri buildDocumentUriAsUser( + @NonNull String authority, @NonNull String documentId, @NonNull UserHandle user) { + return ContentProvider.maybeAddUserId( + buildDocumentUri(authority, documentId), user.getIdentifier()); + } + /** {@hide} */ public static Uri buildBaseDocumentUri(String authority) { return getBaseDocumentUriBuilder(authority).build();