Loading src/java/com/android/internal/telephony/PhoneSubInfoController.java +17 −2 Original line number Diff line number Diff line Loading @@ -125,8 +125,23 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } public String getSubscriberIdForSubscriber(int subId, String callingPackage) { Phone thePhone = getPhone(subId); String message = "getSubscriberId"; if (thePhone != null) { return callPhoneMethodForSubIdWithReadSubscriberIdentifiersCheck(subId, callingPackage, "getSubscriberId", (phone) -> phone.getSubscriberId()); message, (phone) -> phone.getSubscriberId()); } else { if (!TelephonyPermissions.checkCallingOrSelfReadSubscriberIdentifiers( mContext, subId, callingPackage, message)) { return null; } final long identity = Binder.clearCallingIdentity(); try { return SubscriptionController.getInstance().getImsi(subId); } finally { Binder.restoreCallingIdentity(identity); } } } /** Loading src/java/com/android/internal/telephony/SubscriptionController.java +47 −1 Original line number Diff line number Diff line Loading @@ -1822,6 +1822,53 @@ public class SubscriptionController extends ISub.Stub { return result; } /** * Set IMSI by subscription ID * @param imsi IMSI (International Mobile Subscriber Identity) * @return the number of records updated */ public int setImsi(String imsi, int subId) { if (DBG) logd("[setImsi]+ imsi:" + imsi + " subId:" + subId); ContentValues value = new ContentValues(1); value.put(SubscriptionManager.IMSI, imsi); int result = mContext.getContentResolver().update( SubscriptionManager.getUriForSubscriptionId(subId), value, null, null); // Refresh the Cache of Active Subscription Info List refreshCachedActiveSubscriptionInfoList(); notifySubscriptionInfoChanged(); return result; } /** * Get IMSI by subscription ID * @return imsi */ public String getImsi(int subId) { Cursor cursor = mContext.getContentResolver().query( SubscriptionManager.getUriForSubscriptionId(subId), null, SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID + "=?", new String[]{String.valueOf(subId)}, null); String imsi = null; try { if (cursor != null) { if (cursor.moveToNext()) { imsi = getOptionalStringFromCursor(cursor, SubscriptionManager.IMSI, /*defaultVal*/ null); } } } finally { if (cursor != null) { cursor.close(); } } return imsi; } /** * Set ISO country code by subscription ID * @param iso iso country code associated with the subscription Loading Loading @@ -2917,7 +2964,6 @@ public class SubscriptionController extends ISub.Stub { } /** * * @param groupUuid a UUID assigned to the subscription group. * @param callingPackage the package making the IPC. * @return if callingPackage has carrier privilege on sublist. Loading src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +7 −1 Original line number Diff line number Diff line Loading @@ -453,7 +453,8 @@ public class SubscriptionInfoUpdater extends Handler { } else { for (SubscriptionInfo sub : subscriptionInfos) { int subId = sub.getSubscriptionId(); TelephonyManager tm = TelephonyManager.getDefault(); TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); String operator = tm.getSimOperatorNumeric(subId); if (!TextUtils.isEmpty(operator)) { Loading @@ -478,6 +479,11 @@ public class SubscriptionInfoUpdater extends Handler { SubscriptionController.getInstance().setDisplayNumber(msisdn, subId); } String imsi = tm.createForSubscriptionId(subId).getSubscriberId(); if (imsi != null) { SubscriptionController.getInstance().setImsi(imsi, subId); } String[] ehplmns = records.getEhplmns(); String[] hplmns = records.getPlmnsFromHplmnActRecord(); if (ehplmns != null || hplmns != null) { Loading tests/telephonytests/src/com/android/internal/telephony/FakeTelephonyProvider.java +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ public class FakeTelephonyProvider extends MockContentProvider { + SubscriptionManager.WHITE_LISTED_APN_DATA + " INTEGER DEFAULT 0," + SubscriptionManager.GROUP_OWNER + " TEXT," + SubscriptionManager.DATA_ENABLED_OVERRIDE_RULES + " TEXT" + SubscriptionManager.IMSI + " TEXT" + ");"; } Loading tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,13 @@ public class PhoneSubInfoControllerTest extends TelephonyTest { .getSubscriberIdForSubscriber(1, TAG)); } @Test @SmallTest public void testGetSubscriberIdWithInactiveSubId() { //IMSI assertNull(mPhoneSubInfoControllerUT.getSubscriberIdForSubscriber(2, TAG)); } @Test @SmallTest public void testGetSubscriberIdWithOutPermission() { Loading Loading
src/java/com/android/internal/telephony/PhoneSubInfoController.java +17 −2 Original line number Diff line number Diff line Loading @@ -125,8 +125,23 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } public String getSubscriberIdForSubscriber(int subId, String callingPackage) { Phone thePhone = getPhone(subId); String message = "getSubscriberId"; if (thePhone != null) { return callPhoneMethodForSubIdWithReadSubscriberIdentifiersCheck(subId, callingPackage, "getSubscriberId", (phone) -> phone.getSubscriberId()); message, (phone) -> phone.getSubscriberId()); } else { if (!TelephonyPermissions.checkCallingOrSelfReadSubscriberIdentifiers( mContext, subId, callingPackage, message)) { return null; } final long identity = Binder.clearCallingIdentity(); try { return SubscriptionController.getInstance().getImsi(subId); } finally { Binder.restoreCallingIdentity(identity); } } } /** Loading
src/java/com/android/internal/telephony/SubscriptionController.java +47 −1 Original line number Diff line number Diff line Loading @@ -1822,6 +1822,53 @@ public class SubscriptionController extends ISub.Stub { return result; } /** * Set IMSI by subscription ID * @param imsi IMSI (International Mobile Subscriber Identity) * @return the number of records updated */ public int setImsi(String imsi, int subId) { if (DBG) logd("[setImsi]+ imsi:" + imsi + " subId:" + subId); ContentValues value = new ContentValues(1); value.put(SubscriptionManager.IMSI, imsi); int result = mContext.getContentResolver().update( SubscriptionManager.getUriForSubscriptionId(subId), value, null, null); // Refresh the Cache of Active Subscription Info List refreshCachedActiveSubscriptionInfoList(); notifySubscriptionInfoChanged(); return result; } /** * Get IMSI by subscription ID * @return imsi */ public String getImsi(int subId) { Cursor cursor = mContext.getContentResolver().query( SubscriptionManager.getUriForSubscriptionId(subId), null, SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID + "=?", new String[]{String.valueOf(subId)}, null); String imsi = null; try { if (cursor != null) { if (cursor.moveToNext()) { imsi = getOptionalStringFromCursor(cursor, SubscriptionManager.IMSI, /*defaultVal*/ null); } } } finally { if (cursor != null) { cursor.close(); } } return imsi; } /** * Set ISO country code by subscription ID * @param iso iso country code associated with the subscription Loading Loading @@ -2917,7 +2964,6 @@ public class SubscriptionController extends ISub.Stub { } /** * * @param groupUuid a UUID assigned to the subscription group. * @param callingPackage the package making the IPC. * @return if callingPackage has carrier privilege on sublist. Loading
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +7 −1 Original line number Diff line number Diff line Loading @@ -453,7 +453,8 @@ public class SubscriptionInfoUpdater extends Handler { } else { for (SubscriptionInfo sub : subscriptionInfos) { int subId = sub.getSubscriptionId(); TelephonyManager tm = TelephonyManager.getDefault(); TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); String operator = tm.getSimOperatorNumeric(subId); if (!TextUtils.isEmpty(operator)) { Loading @@ -478,6 +479,11 @@ public class SubscriptionInfoUpdater extends Handler { SubscriptionController.getInstance().setDisplayNumber(msisdn, subId); } String imsi = tm.createForSubscriptionId(subId).getSubscriberId(); if (imsi != null) { SubscriptionController.getInstance().setImsi(imsi, subId); } String[] ehplmns = records.getEhplmns(); String[] hplmns = records.getPlmnsFromHplmnActRecord(); if (ehplmns != null || hplmns != null) { Loading
tests/telephonytests/src/com/android/internal/telephony/FakeTelephonyProvider.java +1 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ public class FakeTelephonyProvider extends MockContentProvider { + SubscriptionManager.WHITE_LISTED_APN_DATA + " INTEGER DEFAULT 0," + SubscriptionManager.GROUP_OWNER + " TEXT," + SubscriptionManager.DATA_ENABLED_OVERRIDE_RULES + " TEXT" + SubscriptionManager.IMSI + " TEXT" + ");"; } Loading
tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,13 @@ public class PhoneSubInfoControllerTest extends TelephonyTest { .getSubscriberIdForSubscriber(1, TAG)); } @Test @SmallTest public void testGetSubscriberIdWithInactiveSubId() { //IMSI assertNull(mPhoneSubInfoControllerUT.getSubscriberIdForSubscriber(2, TAG)); } @Test @SmallTest public void testGetSubscriberIdWithOutPermission() { Loading