summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java53
1 files changed, 31 insertions, 22 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 675ebd3ddd60..9c40af1c0105 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -3611,10 +3611,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (isProfileOwnerOfOrganizationOwnedDevice(userId)
&& getManagedSubscriptionsPolicy().getPolicyType()
== ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS) {
- String defaultDialerPackageName = getOemDefaultDialerPackage();
- String defaultSmsPackageName = getOemDefaultSmsPackage();
- updateDialerAndSmsManagedShortcutsOverrideCache(defaultDialerPackageName,
- defaultSmsPackageName);
+ updateDialerAndSmsManagedShortcutsOverrideCache();
}
startOwnerService(userId, "start-user");
@@ -10683,15 +10680,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return UserHandle.USER_NULL;
}
- private @UserIdInt int getManagedProfileUserId() {
- for (UserInfo ui : mUserManagerInternal.getUserInfos()) {
- if (ui.isManagedProfile()) {
- return ui.id;
- }
- }
- return UserHandle.USER_NULL;
- }
-
/**
* This API is cached: invalidate with invalidateBinderCaches().
*/
@@ -11552,6 +11540,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
synchronized (getLockObject()) {
final ActiveAdmin activeAdmin = getParentOfAdminIfRequired(
getProfileOwnerOrDeviceOwnerLocked(caller.getUserId()), parent);
+
+ if (isManagedProfile(userId)) {
+ mInjector.binderWithCleanCallingIdentity(
+ () -> updateDialerAndSmsManagedShortcutsOverrideCache());
+ }
+
if (!Objects.equals(activeAdmin.mSmsPackage, packageName)) {
activeAdmin.mSmsPackage = packageName;
saveSettingsLocked(caller.getUserId());
@@ -11597,6 +11591,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
});
// Only save the package when the setting the role succeeded without exception.
synchronized (getLockObject()) {
+ if (isManagedProfile(callerUserId)) {
+ mInjector.binderWithCleanCallingIdentity(
+ () -> updateDialerAndSmsManagedShortcutsOverrideCache());
+ }
+
final ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(callerUserId);
if (!Objects.equals(admin.mDialerPackage, packageName)) {
admin.mDialerPackage = packageName;
@@ -23829,8 +23828,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
Slogf.w(LOG_TAG, "Couldn't install sms app, sms app package is null");
}
- updateDialerAndSmsManagedShortcutsOverrideCache(defaultDialerPackageName,
- defaultSmsPackageName);
+ updateDialerAndSmsManagedShortcutsOverrideCache();
} catch (RemoteException re) {
// shouldn't happen
Slogf.wtf(LOG_TAG, "Failed to install dialer/sms app", re);
@@ -23846,17 +23844,28 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return mContext.getString(R.string.config_defaultSms);
}
- private void updateDialerAndSmsManagedShortcutsOverrideCache(
- String defaultDialerPackageName, String defaultSmsPackageName) {
+ private void updateDialerAndSmsManagedShortcutsOverrideCache() {
ArrayMap<String, String> shortcutOverrides = new ArrayMap<>();
+ int managedUserId = getManagedUserId();
+ List<String> dialerRoleHolders = mRoleManager.getRoleHoldersAsUser(RoleManager.ROLE_DIALER,
+ UserHandle.of(managedUserId));
+ List<String> smsRoleHolders = mRoleManager.getRoleHoldersAsUser(RoleManager.ROLE_SMS,
+ UserHandle.of(managedUserId));
- if (defaultDialerPackageName != null) {
- shortcutOverrides.put(defaultDialerPackageName, defaultDialerPackageName);
- }
+ String dialerPackageToOverride = getOemDefaultDialerPackage();
+ String smsPackageToOverride = getOemDefaultSmsPackage();
- if (defaultSmsPackageName != null) {
- shortcutOverrides.put(defaultSmsPackageName, defaultSmsPackageName);
+ // To get the default app, we can get all the role holders and get the first element.
+ if (dialerPackageToOverride != null) {
+ shortcutOverrides.put(dialerPackageToOverride,
+ dialerRoleHolders.isEmpty() ? dialerPackageToOverride
+ : dialerRoleHolders.get(0));
}
+ if (smsPackageToOverride != null) {
+ shortcutOverrides.put(smsPackageToOverride,
+ smsRoleHolders.isEmpty() ? smsPackageToOverride : smsRoleHolders.get(0));
+ }
+
mPolicyCache.setLauncherShortcutOverrides(shortcutOverrides);
}