在OnePlus One / Two / Three上进行漫游检测

时间:2016-08-21 19:08:52

标签: android android-source roaming oneplusone oneplustwo

我愿意检测电话上的漫游开关是否已关闭。

if (Build.VERSION.SDK_INT < 17) {
  isDataRoamingDisabled =
      (Settings.System.getInt(context.getContentResolver(), Settings.Secure.DATA_ROAMING, 0)
          == 0);
} else {
  isDataRoamingDisabled =
      (Settings.Global.getInt(context.getContentResolver(), Settings.Global.DATA_ROAMING, 0)
          == 0);
}

不幸的是,只有OnePlus One / Two / Three设置始终为false(0)。 在我测试的休息设备上 - Nexus 6P,LG G5,三星S5都运行良好......

telephonyManager.isNetworkRoaming(),并不是真正的解决方案,因为它会检测用户是否处于漫游状态而不是切换设置。

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:2)

我找到了一些关于这个问题的解决方案.. 这似乎是由于在这些设备上使用双SIM卡而引起的,该设备采用了较新的API来实现此功能。 (我在source code of Oxygen

上找到了它
  1. 此解决方案需要READ_PHONE_STATE权限
  2. 访问每个订阅的漫游:
  3. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
      List<SubscriptionInfo> subscriptions = SubscriptionManager.from(context).getActiveSubscriptionInfoList();
      for (SubscriptionInfo subscriptionInfo:subscriptions) {
        if (subscriptionInfo.getDataRoaming() == SubscriptionManager.DATA_ROAMING_ENABLE) {
          return true;
        }
      }
      return false;
    }
    
    1. 对于其他设备,您可以使用上面指定的解决方案。