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



我在识别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;
}

最新更新