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
This commit is contained in:
Alex Kershaw
2020-01-15 15:21:44 +00:00
parent 658b4ca415
commit 1befe9d85d
2 changed files with 22 additions and 0 deletions

View File

@@ -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";
}

View File

@@ -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();