Flutter读取多个SIM卡号

问题描述 投票:0回答:1

使用 mobile_number 包检测多个 SIM 卡,但在少数 Android 中只能检测到 1 张 SIM 卡,而在少数 Android 中甚至无法检测到 1 张 SIM 卡,并且还需要帮助来检测哪张 SIM 卡是 SIM1 或 SIM2

@override
  void onInit() {
    dbtIdController.value.addListener(dbtFormValid);
    if (Platform.isAndroid) {
      MobileNumber.listenPhonePermission((isPermissionGranted) {
        if (isPermissionGranted) {
          initMobileNumberState();
        }
      });
      initMobileNumberState();
    }
    super.onInit();
  }
Future<void> initMobileNumberState() async {
    if (!await MobileNumber.hasPhonePermission) {
      await MobileNumber.requestPhonePermission;
      return;
    }
    List<SimCard> simCards = [];
    try {
      (await MobileNumber.mobileNumber)!;
      List<SimCard> simCardList = (await MobileNumber.getSimCards)!;
      simCards = simCardList;
      availableMobileNumbers.clear();
      for (var simCard in simCards) {
        String mobileNumber = simCard.number ?? 'N/A';
        availableMobileNumbers.add(mobileNumber);
      }
    } on PlatformException catch (e) {
      debugPrint('Failed to get SIM cards because of ${e.message}');
    }
  }
android flutter mobile flutter-dependencies sim-card
1个回答
0
投票

一直面临这个问题,我们需要为更高和更低的 android sdks 实现两种方式的方案,以从长远来看解决这个问题

 // For newer SDKs, use SubscriptionManager, for older, use TelephonyManager directly
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        // Use SubscriptionManager APIs for newer versions
    } else {
        // Use TelephonyManager.getSimSerialNumber(), etc. for older versions
    }

    return simCardNumbers;
}

}

© www.soinside.com 2019 - 2024. All rights reserved.