簡體   English   中英

在OnePlus一/二/三上進行漫游檢測

[英]Roaming detection on OnePlus One/Two/Three

我願意檢測電話上的漫游開關是否關閉。

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,該設置始終為假(0)。 在我測試過的其余設備上-Nexus 6P,LG G5,三星S5都可以正常工作...

telephonyManager.isNetworkRoaming(),在這里並不是真正的解決方案,因為它會檢測用戶是否在漫游中並且未切換設置。

感謝幫助! :)

我找到了有關此問題的一些解決方案。似乎是由在這些設備上使用Dual SIM引起的,該設備為此功能采用了更新的API。 (我在Oxygen源代碼上找到了它)

  1. 此解決方案需要READ_PHONE_STATE權限
  2. 訪問每個訂閱的漫游:
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. 對於其他設備,您可以使用上面指定的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM