You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用mobile_number.dart无法获取双卡号码的问题咨询

解决Flutter mobile_number库无法获取双SIM卡第二个号码的问题

以下是可能的原因及对应的解决方案:

可能原因

  • 系统权限限制:Android 10(API 29)及以上版本对读取SIM号码的权限管控更严格,部分场景下第三方应用无法读取第二个SIM卡的号码;部分设备需要额外的权限配置。
  • SIM卡本身无号码存储:第二个SIM卡的号码未被运营商写入SIM卡芯片中,这种情况下系统本身也无法识别号码,自然无法通过库获取。
  • 库的底层实现缺陷:旧版本的mobile_number库可能存在多SIM卡处理逻辑的bug,未正确遍历所有卡槽的SIM信息。
  • 设备兼容性问题:部分品牌设备的多SIM卡实现与Android标准有差异,导致库无法正确读取第二个卡槽数据。

解决步骤

  1. 确认权限配置
    在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权限,且权限申请时要确保用户授予了该权限。

  2. 验证SIM卡状态
    进入设备系统设置的SIM卡管理页面,查看第二个SIM卡是否显示号码。如果系统中也看不到号码,联系运营商将号码写入SIM卡。

  3. 更新库版本
    检查pubspec.yaml中mobile_number的版本,升级到最新版:

    dependencies:
      mobile_number: ^最新版本号
    

    执行flutter pub get更新依赖。

  4. 自定义原生读取逻辑
    如果库本身存在问题,可以自行实现Android原生代码读取多SIM卡信息:

    • 在Android端创建MethodChannel,使用TelephonyManager的getSubscriptionInfoList()方法获取所有SIM订阅信息,从中提取号码。
    • 通过MethodChannel将数据传递给Flutter端。
  5. 多设备测试
    在不同品牌的双SIM设备上测试,排查是否是特定设备的兼容性问题。

内容的提问来源于stack exchange,提问作者Suresh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:02:52