From 54cb63c182473eb38f33b7af555a7b60787fa52b Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Thu, 2 Jun 2016 12:41:42 -0700 Subject: [PATCH] Avoid triggering support dialog in non-current user. Bug: 28953755 Change-Id: I3e23a003ec7c8c3d275fa09d6d58f59cc272f617 --- .../settingslib/RestrictedLockUtils.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java index 8e43bffbbfdce..282556cdd33a5 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java @@ -616,11 +616,12 @@ public class RestrictedLockUtils { */ public static void sendShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) { final Intent intent = getShowAdminSupportDetailsIntent(context, admin); - int adminUserId = UserHandle.myUserId(); - if (admin.userId != UserHandle.USER_NULL) { - adminUserId = admin.userId; + int targetUserId = UserHandle.myUserId(); + if (admin != null && admin.userId != UserHandle.USER_NULL + && isCurrentUserOrProfile(context, admin.userId)) { + targetUserId = admin.userId; } - context.startActivityAsUser(intent, new UserHandle(adminUserId)); + context.startActivityAsUser(intent, new UserHandle(targetUserId)); } public static Intent getShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) { @@ -638,6 +639,28 @@ public class RestrictedLockUtils { return intent; } + public static boolean isCurrentUserOrProfile(Context context, int userId) { + UserManager um = UserManager.get(context); + for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) { + if (userInfo.id == userId) { + return true; + } + } + return false; + } + + public static boolean isAdminInCurrentUserOrProfile(Context context, ComponentName admin) { + DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + UserManager um = UserManager.get(context); + for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) { + if (dpm.isAdminActiveAsUser(admin, userInfo.id)) { + return true; + } + } + return false; + } + public static void setTextViewPadlock(Context context, TextView textView, boolean showPadlock) { final SpannableStringBuilder sb = new SpannableStringBuilder(textView.getText());