Merge "Override work profile OEM telephony shortcuts with defaults" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0b2cda7782
@@ -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");
|
||||
@@ -10728,15 +10725,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().
|
||||
*/
|
||||
@@ -11599,6 +11587,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());
|
||||
@@ -11644,6 +11638,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;
|
||||
@@ -23934,8 +23933,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);
|
||||
@@ -23951,17 +23949,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();
|
||||
|
||||
// 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));
|
||||
}
|
||||
|
||||
if (defaultSmsPackageName != null) {
|
||||
shortcutOverrides.put(defaultSmsPackageName, defaultSmsPackageName);
|
||||
}
|
||||
mPolicyCache.setLauncherShortcutOverrides(shortcutOverrides);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user