簡體   English   中英

Android 5.0 (L) - 檢查數據漫游設置

[英]Android 5.0 (L) - Check data Roaming Setting

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

有沒有人知道這個設置被移到哪里?

提前致謝!

從文檔中檢查這個DevicePolicyManager.setGlobalSetting這只能由設備所有者應用程序調用。 您的應用是否以設備所有者身份安裝? 如果沒有,您可以查看以下鏈接

做這樣的事情

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

Admin_Component:組件實例

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

從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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM