我愿意检测电话上的漫游开关是否关闭。
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(),
并不是真正的解决方案,因为它可以检测用户是否在漫游中,而不切换设置。感谢帮助! :)
最佳答案
我找到了有关此问题的解决方案。
似乎是由于在这些设备上使用了双SIM卡所导致的,该设备采用了更新的API来实现此功能。 (我在source code of Oxygen上找到了它)
此解决方案需要READ_PHONE_STATE
权限
访问每个订阅的漫游:
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;
}
对于其他设备,您可以使用上面指定的解决方案。