[英]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.