我在Android L中识别数据漫游设置时遇到问题。在以前版本的Android中,我可以访问Settings.Secure或Settings.Global(取决于Android版本),并获取设置。
但是现在,在Android L上,这已经不再适用了。无论数据漫游是打开还是关闭,Settings.Global的返回始终为0.
Android L支持开箱即用的多SIM卡,因此,创建了一个新的管理器来处理这个问题:SubscriptionManager。此订阅管理器以SubInfoRecord类的形式处理多个SIM卡的多个设置。我可以检索每张SIM卡的设置。
但是,该类中的dataRoaming也始终为0。
有谁知道如何在新API上实现这一目标?
我的应用程序是一个系统应用程序,它嵌入在工厂的手机中,因此,我应该能够访问所有可用的API。
但是,我花了很长时间查看源代码,但我一无所获。在Settings.Global类中,没有迹象表明该设置不再适用于Android。
有没有人知道此设置的移动位置?
提前致谢!
答案 0 :(得分:1)
检查DevicePolicyManager.setGlobalSetting 从文档来看,这只能由设备所有者应用程序调用。 您的应用是否已安装为设备所有者? 如果没有,您可以查看以下链接
做这样的事情
DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
manager.setGlobalSetting(<Admin_Component>, Settings.Global.DATA_ROAMING, <value>);
Admin_Component:组件实例
值:“0”表示禁用或“1”表示启用
答案 1 :(得分:0)
自android 5.0起,android支持多个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;
}