diff options
| author | 2023-08-22 16:34:23 -0700 | |
|---|---|---|
| committer | 2023-10-23 14:11:51 -0700 | |
| commit | 5c2d62232ca008de55ce2c8735eb9701ad12b8a9 (patch) | |
| tree | b8588021bd203267327e44af0bd8a8ab9e50ae46 | |
| parent | b9966b72838195d2b51e179397e76a33da0ea22a (diff) | |
Limited profiles to access only associated subscriptions
The profile can only access its associated subscriptions.
Default voice/sms subscription ids would be profile
dependent. The behavior does not change if no association
is set.
Bug: 296076674
Test: assign both SIMs to a profile + assign each to profiles to make
call and send messages
Change-Id: Ieb19ff6d917cc6b73773fae5e037237a49a0dfb7
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionManager.java | 22 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/ISub.aidl | 3 |
2 files changed, 14 insertions, 11 deletions
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 8e90fe7ea975..f8608b8fead2 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -265,8 +265,8 @@ public class SubscriptionManager { } } - private static VoidPropertyInvalidatedCache<Integer> sGetDefaultSubIdCache = - new VoidPropertyInvalidatedCache<>(ISub::getDefaultSubId, + private static IntegerPropertyInvalidatedCache<Integer> sGetDefaultSubIdCacheAsUser = + new IntegerPropertyInvalidatedCache<>(ISub::getDefaultSubIdAsUser, CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); @@ -275,8 +275,8 @@ public class SubscriptionManager { CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); - private static VoidPropertyInvalidatedCache<Integer> sGetDefaultSmsSubIdCache = - new VoidPropertyInvalidatedCache<>(ISub::getDefaultSmsSubId, + private static IntegerPropertyInvalidatedCache<Integer> sGetDefaultSmsSubIdCacheAsUser = + new IntegerPropertyInvalidatedCache<>(ISub::getDefaultSmsSubIdAsUser, CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); @@ -2309,7 +2309,7 @@ public class SubscriptionManager { * @return the "system" default subscription id. */ public static int getDefaultSubscriptionId() { - return sGetDefaultSubIdCache.query(null); + return sGetDefaultSubIdCacheAsUser.query(Process.myUserHandle().getIdentifier()); } /** @@ -2325,7 +2325,7 @@ public class SubscriptionManager { try { ISub iSub = TelephonyManager.getSubscriptionService(); if (iSub != null) { - subId = iSub.getDefaultVoiceSubId(); + subId = iSub.getDefaultVoiceSubIdAsUser(Process.myUserHandle().getIdentifier()); } } catch (RemoteException ex) { // ignore it @@ -2397,7 +2397,7 @@ public class SubscriptionManager { * @return the default SMS subscription Id. */ public static int getDefaultSmsSubscriptionId() { - return sGetDefaultSmsSubIdCache.query(null); + return sGetDefaultSmsSubIdCacheAsUser.query(Process.myUserHandle().getIdentifier()); } /** @@ -3927,10 +3927,10 @@ public class SubscriptionManager { * @hide */ public static void disableCaching() { - sGetDefaultSubIdCache.disableLocal(); + sGetDefaultSubIdCacheAsUser.disableLocal(); sGetDefaultDataSubIdCache.disableLocal(); sGetActiveDataSubscriptionIdCache.disableLocal(); - sGetDefaultSmsSubIdCache.disableLocal(); + sGetDefaultSmsSubIdCacheAsUser.disableLocal(); sGetSlotIndexCache.disableLocal(); sGetSubIdCache.disableLocal(); sGetPhoneIdCache.disableLocal(); @@ -3941,10 +3941,10 @@ public class SubscriptionManager { * * @hide */ public static void clearCaches() { - sGetDefaultSubIdCache.clear(); + sGetDefaultSubIdCacheAsUser.clear(); sGetDefaultDataSubIdCache.clear(); sGetActiveDataSubscriptionIdCache.clear(); - sGetDefaultSmsSubIdCache.clear(); + sGetDefaultSmsSubIdCacheAsUser.clear(); sGetSlotIndexCache.clear(); sGetSubIdCache.clear(); sGetPhoneIdCache.clear(); diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl index a5a23e8659d8..d2dbeb7aff74 100644 --- a/telephony/java/com/android/internal/telephony/ISub.aidl +++ b/telephony/java/com/android/internal/telephony/ISub.aidl @@ -239,6 +239,7 @@ interface ISub { int getSubId(int slotIndex); int getDefaultSubId(); + int getDefaultSubIdAsUser(int userId); int getPhoneId(int subId); @@ -251,10 +252,12 @@ interface ISub { void setDefaultDataSubId(int subId); int getDefaultVoiceSubId(); + int getDefaultVoiceSubIdAsUser(int userId); void setDefaultVoiceSubId(int subId); int getDefaultSmsSubId(); + int getDefaultSmsSubIdAsUser(int userId); void setDefaultSmsSubId(int subId); |