Merge "Add Context.createContextAsUser()"

This commit is contained in:
Treehugger Robot
2019-11-20 21:53:01 +00:00
committed by Gerrit Code Review
6 changed files with 44 additions and 3 deletions

View File

@@ -1366,8 +1366,9 @@ package android.content {
public abstract class Context {
method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean bindServiceAsUser(@RequiresPermission android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle);
method public abstract android.content.Context createCredentialProtectedStorageContext();
method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method @Nullable public abstract java.io.File getPreloadsFileCache();
method public abstract boolean isCredentialProtectedStorage();
method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);

View File

@@ -640,7 +640,8 @@ package android.content {
}
public abstract class Context {
method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle);
method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method public abstract android.view.Display getDisplay();
method public abstract int getDisplayId();
method public android.os.UserHandle getUser();

View File

@@ -2223,6 +2223,15 @@ class ContextImpl extends Context {
"Application package " + packageName + " not found");
}
@Override
public Context createContextAsUser(UserHandle user) {
try {
return createPackageContextAsUser(getPackageName(), mFlags, user);
} catch (NameNotFoundException e) {
throw new IllegalStateException("Own package not found: package=" + getPackageName());
}
}
@Override
public Context createContextForSplit(String splitName) throws NameNotFoundException {
if (!mPackageInfo.getApplicationInfo().requestsIsolatedSplitLoading()) {

View File

@@ -5256,8 +5256,9 @@ public abstract class Context {
*/
@SystemApi
@TestApi
@NonNull
public Context createPackageContextAsUser(
String packageName, @CreatePackageOptions int flags, UserHandle user)
@NonNull String packageName, @CreatePackageOptions int flags, @NonNull UserHandle user)
throws PackageManager.NameNotFoundException {
if (Build.IS_ENG) {
throw new IllegalStateException("createPackageContextAsUser not overridden!");
@@ -5265,6 +5266,23 @@ public abstract class Context {
return this;
}
/**
* Similar to {@link #createPackageContext(String, int)}, but for the own package with a
* different {@link UserHandle}. For example, {@link #getContentResolver()}
* will open any {@link Uri} as the given user.
*
* @hide
*/
@SystemApi
@TestApi
@NonNull
public Context createContextAsUser(@NonNull UserHandle user) {
if (Build.IS_ENG) {
throw new IllegalStateException("createContextAsUser not overridden!");
}
return this;
}
/**
* Creates a context given an {@link android.content.pm.ApplicationInfo}.
*

View File

@@ -896,6 +896,12 @@ public class ContextWrapper extends Context {
return mBase.createPackageContextAsUser(packageName, flags, user);
}
/** @hide */
@Override
public Context createContextAsUser(UserHandle user) {
return mBase.createContextAsUser(user);
}
/** @hide */
@Override
@UnsupportedAppUsage

View File

@@ -763,6 +763,12 @@ public class MockContext extends Context {
throw new UnsupportedOperationException();
}
/** {@hide} */
@Override
public Context createContextAsUser(UserHandle user) {
throw new UnsupportedOperationException();
}
/** {@hide} */
@Override
public int getUserId() {