我在识别Android L中的数据漫游设置时遇到问题。在以前版本的Android中,我能够访问Settings.Secure或Settings.Global(取决于Android版本),并获取设置。
但是现在,在Android L上,这不再有效。无论数据漫游是打开还是关闭,"设置.全局"的返回始终为 0。
Android L 支持开箱即用的多 SIM 卡,因此创建了一个新的管理器来处理这个问题:订阅管理器。此订阅管理器以子信息记录类的形式处理几张SIM卡的多个设置。我可以检索每张SIM卡的设置。
但是,在该类中归档的数据漫游也始终为 0。
有谁知道如何在新 API 上实现这一点?
我的应用程序是工厂嵌入到手机中的系统应用程序,因此,我应该能够访问所有可用的 API。
但是,我花了很长时间查找源代码,但一无所获。在 Settings.Global 类中,没有迹象表明该设置不再适用于 Android。
有没有人知道此设置被移动到哪里?
提前感谢!
检查此 DevicePolicyManager.setGlobalSetting从文档来看,这只能由设备所有者应用程序调用。你的应用是否以设备所有者身份安装?如果没有,您可以查看以下链接
-
创建没有根的设备所有者
-
使用根创建设备所有者
做这样的事情
DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
manager.setGlobalSetting(<Admin_Component>, Settings.Global.DATA_ROAMING, <value>);
Admin_Component:组件实例
值:"0"表示禁用,"1"表示启用
5.0 开始,安卓支持多张 SIM 卡,请使用以下代码检查数据漫游。
public static boolean isDataRoamingEnabled(Context context) {
SubscriptionManager subMngr = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
int id = SubscriptionManager.getDefaultDataSubscriptionId();
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return false;
}
SubscriptionInfo ino = subMngr.getActiveSubscriptionInfo(id);
if (ino == null)
return false;
return ino.getDataRoaming() == 1;
}