From 89945f54ac0714ce4f85420be45f36b631f14649 Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Wed, 15 Mar 2023 22:20:04 +0000 Subject: [PATCH 1/2] Fix logic to get default dialer/SMS app Bug: 269450111 Test: atest android.devicepolicy.cts.ManagedSubscriptionsPolicyTest Change-Id: I0b9967ea91f9fda0781b13104b948cec1df58b3c --- .../DevicePolicyManagerService.java | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index e82e05cead3ac..782711fb4a0b2 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -425,6 +425,7 @@ import android.security.keystore.AttestationUtils; import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.ParcelableKeyGenParameterSpec; import android.stats.devicepolicy.DevicePolicyEnums; +import android.telecom.TelecomManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; @@ -3533,26 +3534,21 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { userId == UserHandle.USER_SYSTEM ? UserHandle.USER_ALL : userId); updatePermissionPolicyCache(userId); updateAdminCanGrantSensorsPermissionCache(userId); - final List preferentialNetworkServiceConfigs; - boolean isManagedSubscription; + final List preferentialNetworkServiceConfigs; synchronized (getLockObject()) { ActiveAdmin owner = getDeviceOrProfileOwnerAdminLocked(userId); preferentialNetworkServiceConfigs = owner != null ? owner.mPreferentialNetworkServiceConfigs : List.of(PreferentialNetworkServiceConfig.DEFAULT); - - isManagedSubscription = owner != null && owner.mManagedSubscriptionsPolicy != null - && owner.mManagedSubscriptionsPolicy.getPolicyType() - == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS; } updateNetworkPreferenceForUser(userId, preferentialNetworkServiceConfigs); - if (isManagedSubscription) { - String defaultDialerPackageName = getDefaultRoleHolderPackageName( - com.android.internal.R.string.config_defaultDialer); - String defaultSmsPackageName = getDefaultRoleHolderPackageName( - com.android.internal.R.string.config_defaultSms); + if (isProfileOwnerOfOrganizationOwnedDevice(userId) + && getManagedSubscriptionsPolicy().getPolicyType() + == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS) { + String defaultDialerPackageName = getOemDefaultDialerPackage(); + String defaultSmsPackageName = getOemDefaultSmsPackage(); updateDialerAndSmsManagedShortcutsOverrideCache(defaultDialerPackageName, defaultSmsPackageName); } @@ -22780,10 +22776,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void installOemDefaultDialerAndSmsApp(int targetUserId) { try { - String defaultDialerPackageName = getDefaultRoleHolderPackageName( - com.android.internal.R.string.config_defaultDialer); - String defaultSmsPackageName = getDefaultRoleHolderPackageName( - com.android.internal.R.string.config_defaultSms); + String defaultDialerPackageName = getOemDefaultDialerPackage(); + String defaultSmsPackageName = getOemDefaultSmsPackage(); if (defaultDialerPackageName != null) { mIPackageManager.installExistingPackageAsUser(defaultDialerPackageName, @@ -22809,6 +22803,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + private String getOemDefaultDialerPackage() { + TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class); + return telecomManager.getSystemDialerPackage(); + } + + private String getOemDefaultSmsPackage() { + return mContext.getString(R.string.config_defaultSms); + } + private void updateDialerAndSmsManagedShortcutsOverrideCache( String defaultDialerPackageName, String defaultSmsPackageName) { From eb841fc37461a324c3ab44d52e61ca163f2d34af Mon Sep 17 00:00:00 2001 From: Ayush Sharma Date: Fri, 17 Mar 2023 13:59:04 +0000 Subject: [PATCH 2/2] Avoid hardcoding SYSTEM_USER to support HSUM In case of headless system user mode, first human user would not be SYSTEM_USER(user 0), so avoid harcoding for SYSTEM_USER. Bug: 265281464 Test: atest android.devicepolicy.cts.ManagedSubscriptionsPolicyTest Change-Id: I261867048a2a5b44d19ba5b34537b8d5201e4534 --- .../server/devicepolicy/DevicePolicyManagerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 782711fb4a0b2..6cfca3e1979a4 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -22741,9 +22741,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { "This policy can only be set by a profile owner on an organization-owned " + "device."); + int parentUserId = getProfileParentId(caller.getUserId()); synchronized (getLockObject()) { final ActiveAdmin admin = getProfileOwnerLocked(caller.getUserId()); - if (hasUserSetupCompleted(UserHandle.USER_SYSTEM) && !isAdminTestOnlyLocked( + if (hasUserSetupCompleted(parentUserId) && !isAdminTestOnlyLocked( admin.info.getComponent(), caller.getUserId())) { throw new IllegalStateException("Not allowed to apply this policy after setup"); } @@ -22765,7 +22766,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { if (policyType == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS) { final long id = mInjector.binderClearCallingIdentity(); try { - int parentUserId = getProfileParentId(caller.getUserId()); installOemDefaultDialerAndSmsApp(caller.getUserId()); updateTelephonyCrossProfileIntentFilters(parentUserId, caller.getUserId(), true); } finally {