從Android端鎖定慣用網路類型

來源:互聯網
上載者:User

標籤:

Android的慣用網路類型, 也就是preferred network mode, 是儲存在SettingsProvider中. 當然, modem中也會儲存一份, 但依照Android的設計, 是以SettingsProvider中所存放的使用者設定值為主, 若AP core和modem不同步時, 就會由AP core主動向modem端發起同步的請求.

 

Android M開始, Android Settingsprovider的儲存方式改由原本的databases換成XML檔,因此,我們只要用修改設定檔的方式即可

1. adb pull/data/system/users/0/settings_global.xml

2. 將檔案中 "preferred_network_mode" 的值改成你想要的RAT值 (相關值可參考 RilConstants.java ),這裡的10代表全網, 包含GSM, WCDMA, LTE和CDMA2000

  <setting id="38"name="preferred_network_mode" value="10"package="android" />

  <setting id="90"name="preferred_network_mode1" value="10"package="com.android.phone" />

3. 再將修改過的 settings_global.xml 推送回手機中 

    adbpush settings_global.xml data/system/users/0/

4. 重啟手機 "adb reboot"



回顧一下Android L以及以前版本.當時使用的是數據庫,操作如下

1. 輸入 "adb shell" 進入shell

2. 開啟數據庫 "sqlite3data/data/com.android.providers.settings/databases/settings.db" 

3. 若要讀取當年的慣用網路設置值,可輸入

"select * from global wherename like ‘%preferred_network_mode%‘;"

 

4. 若要修改值,輸入以下SQL指令,這裡的3代表GSM/WCDMA

"update global set value =‘3‘ where name like ‘%preferred_network_mode%‘;"

5. 重啟手機 "adb reboot"

 

以下是 RilConstants.java 中所定義的網路模式值

    /* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */    int NETWORK_MODE_WCDMA_PREF     = 0; /* GSM/WCDMA (WCDMA preferred) */    int NETWORK_MODE_GSM_ONLY       = 1; /* GSM only */    int NETWORK_MODE_WCDMA_ONLY     = 2; /* WCDMA only */    int NETWORK_MODE_GSM_UMTS       = 3; /* GSM/WCDMA (auto mode, according to PRL)                                            AVAILABLE Application Settings menu*/    int NETWORK_MODE_CDMA           = 4; /* CDMA and EvDo (auto mode, according to PRL)                                            AVAILABLE Application Settings menu*/    int NETWORK_MODE_CDMA_NO_EVDO   = 5; /* CDMA only */    int NETWORK_MODE_EVDO_NO_CDMA   = 6; /* EvDo only */    int NETWORK_MODE_GLOBAL         = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)                                            AVAILABLE Application Settings menu*/    int NETWORK_MODE_LTE_CDMA_EVDO  = 8; /* LTE, CDMA and EvDo */    int NETWORK_MODE_LTE_GSM_WCDMA  = 9; /* LTE, GSM/WCDMA */    int NETWORK_MODE_LTE_CMDA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */    int NETWORK_MODE_LTE_ONLY       = 11; /* LTE Only mode. */    int NETWORK_MODE_LTE_WCDMA      = 12; /* LTE/WCDMA */    int PREFERRED_NETWORK_MODE      = NETWORK_MODE_WCDMA_PREF;

 

 

從Android端鎖定慣用網路類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.