Android 下獲取 ICCID、電話號碼 的兩種方式

一、需要權限:
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
二、獲取方法:
  1. 常規方法:
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
String  iccid    = telephonyManager.getSimSerialNumber();
String  phoneNumber = telephonyManager.getLine1Number();
  1. 在 Android Q 以後,就不能獲取到值了

  2. 如果是雙卡手機,SIM卡槽1插卡時,獲取到的是1卡的值。SIM卡槽1沒有插卡時,獲取到的是2卡的值。

  1. 第二種方法:
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();//當前卡槽數量
}
  1. 只能在API 22及以上使用

  2. 可以獲取到卡槽數量、當前插卡數量

  3. 可以獲取到每個卡的信息:ICCID、電話號碼等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章