diff options
author | Philip P. Moltmann <moltmann@google.com> | 2019-03-18 09:13:44 -0700 |
---|---|---|
committer | Philip P. Moltmann <moltmann@google.com> | 2019-03-18 18:43:40 +0000 |
commit | 477666d963d152a57720aa6aca8962430b0fe41c (patch) | |
tree | 4ccaa2d7abee7509c65d07e083849bb926785b0c | |
parent | 6983ad3f17566a44d36886affb5e877e7e4ae34c (diff) |
No need for getProfileOwnerForUser as SystemApi
Rather use
context.createPackageContextAsUser(context.getPackageName(), 0, user)
.getSystemService(DevicePolicyManager.class).getProfileOwner();
Test: Looked at permission restricted by device owner in UI
Fixes: 126699845
Change-Id: I3dc16fbe360aaeb416c526cacf5f55ce2c3a1b20
3 files changed, 11 insertions, 3 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 42b8a5d5340c..267ecd455626 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -667,7 +667,6 @@ package android.app.admin { method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int); method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser(); method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException; - method @Nullable @RequiresPermission(value=android.Manifest.permission.INTERACT_ACROSS_USERS, conditional=true) public android.content.ComponentName getProfileOwnerAsUser(@NonNull android.os.UserHandle); method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException; method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserProvisioningState(); method public boolean isDeviceManaged(); diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 9a4e2151dd3b..100edf306d09 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -6339,7 +6339,6 @@ public class DevicePolicyManager { */ @RequiresPermission(value = android.Manifest.permission.INTERACT_ACROSS_USERS, conditional = true) - @SystemApi public @Nullable ComponentName getProfileOwnerAsUser(@NonNull UserHandle user) { if (mService != null) { try { diff --git a/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java index 8529e3ef8420..87b5b57c7d9e 100644 --- a/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java +++ b/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java @@ -20,6 +20,7 @@ import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; @@ -47,7 +48,16 @@ public class RestrictedLockUtils { if (dpm == null) { return null; } - ComponentName adminComponent = dpm.getProfileOwnerAsUser(user); + + Context userContext; + try { + userContext = context.createPackageContextAsUser(context.getPackageName(), 0, user); + } catch (PackageManager.NameNotFoundException e) { + throw new IllegalStateException(e); + } + + ComponentName adminComponent = userContext.getSystemService( + DevicePolicyManager.class).getProfileOwner(); if (adminComponent != null) { return new EnforcedAdmin(adminComponent, enforcedRestriction, user); } |