Flutter中使用mobile_number.dart无法获取双卡号码的问题咨询
解决Flutter mobile_number库无法获取双SIM卡第二个号码的问题
以下是可能的原因及对应的解决方案:
可能原因
- 系统权限限制:Android 10(API 29)及以上版本对读取SIM号码的权限管控更严格,部分场景下第三方应用无法读取第二个SIM卡的号码;部分设备需要额外的权限配置。
- SIM卡本身无号码存储:第二个SIM卡的号码未被运营商写入SIM卡芯片中,这种情况下系统本身也无法识别号码,自然无法通过库获取。
- 库的底层实现缺陷:旧版本的mobile_number库可能存在多SIM卡处理逻辑的bug,未正确遍历所有卡槽的SIM信息。
- 设备兼容性问题:部分品牌设备的多SIM卡实现与Android标准有差异,导致库无法正确读取第二个卡槽数据。
解决步骤
确认权限配置
在android/app/src/main/AndroidManifest.xml中添加必要权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />注意:Android 12+需要
READ_PHONE_NUMBERS权限,且权限申请时要确保用户授予了该权限。验证SIM卡状态
进入设备系统设置的SIM卡管理页面,查看第二个SIM卡是否显示号码。如果系统中也看不到号码,联系运营商将号码写入SIM卡。更新库版本
检查pubspec.yaml中mobile_number的版本,升级到最新版:dependencies: mobile_number: ^最新版本号执行
flutter pub get更新依赖。自定义原生读取逻辑
如果库本身存在问题,可以自行实现Android原生代码读取多SIM卡信息:- 在Android端创建MethodChannel,使用
TelephonyManager的getSubscriptionInfoList()方法获取所有SIM订阅信息,从中提取号码。 - 通过MethodChannel将数据传递给Flutter端。
- 在Android端创建MethodChannel,使用
多设备测试
在不同品牌的双SIM设备上测试,排查是否是特定设备的兼容性问题。
内容的提问来源于stack exchange,提问作者Suresh Kumar
相关产品推荐
相关产品推荐

