如何在Android中编程获取双卡设备的全部SIM卡手机号
Android双卡设备获取两张SIM卡手机号实现方案
你当前使用的SubscriptionManager思路是正确的,补全权限校验、遍历逻辑以及号码获取方法即可拿到两张SIM卡的手机号,注意该方案仅支持Android 5.1(API 22)及以上系统。
1. 权限配置
首先需要在AndroidManifest.xml中声明对应权限,同时运行时动态申请,两类权限都到位才能正常获取号码:
<!-- Android 11以下仅需声明该权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- Android 11及以上需要额外声明读取手机号专属权限 --> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
以上两个权限均属于Android危险权限,必须在代码中动态申请,用户手动同意后才能调用后续接口。
2. 完整实现代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); // 权限校验 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED) { // 此处补充动态申请权限逻辑,权限申请通过后再执行后续代码 return; } // 获取所有激活状态的SIM卡信息,双卡设备正常会返回2条数据 List<SubscriptionInfo> activeSimList = subscriptionManager.getActiveSubscriptionInfoList(); if (activeSimList != null && !activeSimList.isEmpty()) { for (SubscriptionInfo simInfo : activeSimList) { // 卡槽编号,0对应卡槽1,1对应卡槽2 int slotIndex = simInfo.getSimSlotIndex(); // 读取手机号 String phoneNum = simInfo.getNumber(); // 读取运营商名称 String carrier = simInfo.getCarrierName().toString(); // 此处可根据业务需求存储对应卡槽的手机号 } } } else { // Android 5.1以下系统不支持双卡相关API,仅能获取默认SIM卡手机号 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { String defaultPhone = telephonyManager.getLine1Number(); } }
3. 常见注意事项
- 返回手机号为空:该现象属于正常情况,手机号并非强制写入SIM卡的字段,部分运营商不会将手机号存储在SIM卡对应区域,这种情况无法通过本地接口直接获取手机号,需要通过短信验证、调用运营商接口等其他方式获取。
- 卡槽编号与实际物理卡槽不匹配:部分厂商定制ROM会将默认流量卡/通话卡标记为卡槽0,和实际物理插入顺序不一定完全对应,需要根据业务场景做适配。
- 高版本系统适配:Android 12/13/14版本均兼容该方案,仅需按要求申请对应权限即可正常调用。
内容的提问来源于stack exchange,提问作者user16647221-SIMJEC
相关产品推荐
相关产品推荐

