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、电话号码等

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