Android 5.0(L) - 检查数据漫游设置

时间:2014-11-19 11:27:47

标签: android settings android-5.0-lollipop roaming

我在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。

有没有人知道此设置的移动位置?

提前致谢!

2 个答案:

答案 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;

}