一、需要權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
二、獲取方法:
- 常規方法:
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
String iccid = telephonyManager.getSimSerialNumber();
String phoneNumber = telephonyManager.getLine1Number();
在 Android Q 以後,就不能獲取到值了
如果是雙卡手機,SIM卡槽1插卡時,獲取到的是1卡的值。SIM卡槽1沒有插卡時,獲取到的是2卡的值。
- 第二種方法:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1)
{
SubscriptionManager sm = SubscriptionManager.from(context);
List<SubscriptionInfo> sis =sm.getActiveSubscriptionInfoList();
if (sis.size() >= 1)
{
SubscriptionInfo si1 = sis.get(0);
String iccId1 = si1.getIccId();
String phoneNum1 = si1.getNumber();
}
if (sis.size() >= 2)
{
SubscriptionInfo si2 = sis.get(1);
String iccId2 = si2.getIccId();
String phoneNum2 = si2.getNumber();
}
// 獲取SIM卡數量相關信息:
int count = sm.getActiveSubscriptionInfoCount();//當前實際插卡數量
int max = sm.getActiveSubscriptionInfoCountMax();//當前卡槽數量
}
只能在API 22及以上使用
可以獲取到卡槽數量、當前插卡數量
可以獲取到每個卡的信息:ICCID、電話號碼等