2

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

有没有人知道这个设置被移动到哪里?

提前致谢!

4

2 回答 2

1

从文档中检查此DevicePolicyManager.setGlobalSetting ,这只能由设备所有者应用程序调用。您的应用是作为设备所有者安装的吗?如果没有,您可以查看以下链接

做这样的事情

    DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    manager.setGlobalSetting(<Admin_Component>, Settings.Global.DATA_ROAMING, <value>);

Admin_Component:组件实例

值:“0”表示禁用或“1”表示启用

于 2014-11-21T12:43:42.440 回答
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;

}
于 2020-10-20T09:17:19.760 回答