Android 下获取 ICCID、电话号码 的两种方式

2 篇文章 0 订阅
1 篇文章 0 订阅
一、需要权限:
   <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、电话号码等

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值