Fetch admin details if not present in Intent.

Get admin package/user details if this info is not present in the
intent(ACTION_SHOW_ADMIN_SUPPORT_DETAILS) received

Bug: 192245204
Test: atest MixedDeviceOwnerTest#testCreateAdminSupportIntent
      atest MixedProfileOwnerTest#testCreateAdminSupportIntent
      atest MixedManagedProfileOwnerTest#testCreateAdminSupportIntent

Change-Id: Idda6078a64c03588f0b786ebc79079198ab722fe
Merged-In: Idda6078a64c03588f0b786ebc79079198ab722fe
diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
index ce7ad24..c4bef25 100644
--- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
+++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
@@ -58,11 +58,25 @@
             return admin;
         }
         admin.component = intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+        int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+
+        Bundle adminDetails = null;
+        if (admin.component == null) {
+            DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+            adminDetails = devicePolicyManager.getEnforcingAdminAndUserDetails(userId,
+                    getRestrictionFromIntent(intent));
+            if (adminDetails != null) {
+                admin.component = adminDetails.getParcelable(
+                        DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+            }
+        }
 
         if (intent.hasExtra(Intent.EXTRA_USER)) {
             admin.user = intent.getParcelableExtra(Intent.EXTRA_USER);
         } else {
-            int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+            if (adminDetails != null) {
+                userId = adminDetails.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+            }
             if (userId == UserHandle.USER_NULL) {
                 admin.user = null;
             } else {