Android 首选网络模式默认值的修改方法

出處: http://blog.csdn.net/tony_anmoo/article/details/18707015

修改系统属性:ro.telephony.default_network

修改说明:

可连续给两个值(如4,1),卡1用的是4,卡2用的是1。数字代表的意义见下方的相关代码片段。

相关源码位置:

frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

相关代码片段:

[java] view plain copy

  1. /* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
  2. int NETWORK_MODE_WCDMA_PREF     = 0/* GSM/WCDMA (WCDMA preferred) */
  3. int NETWORK_MODE_GSM_ONLY       = 1/* GSM only */
  4. int NETWORK_MODE_WCDMA_ONLY     = 2/* WCDMA only */
  5. int NETWORK_MODE_GSM_UMTS       = 3/* GSM/WCDMA (auto mode, according to PRL)
  6.                                         AVAILABLE Application Settings menu*/
  7. int NETWORK_MODE_CDMA           = 4/* CDMA and EvDo (auto mode, according to PRL)
  8.                                         AVAILABLE Application Settings menu*/
  9. int NETWORK_MODE_CDMA_NO_EVDO   = 5/* CDMA only */
  10. int NETWORK_MODE_EVDO_NO_CDMA   = 6/* EvDo only */
  11. int NETWORK_MODE_GLOBAL         = 7/* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
  12.                                         AVAILABLE Application Settings menu*/
  13. int NETWORK_MODE_LTE_CDMA_EVDO  = 8/* LTE, CDMA and EvDo */
  14. int NETWORK_MODE_LTE_GSM_WCDMA  = 9/* LTE, GSM/WCDMA */
  15. int NETWORK_MODE_LTE_CMDA_EVDO_GSM_WCDMA = 10/* LTE, CDMA, EvDo, GSM/WCDMA */
  16. int NETWORK_MODE_LTE_ONLY       = 11/* LTE Only mode. */
  17. int NETWORK_MODE_LTE_WCDMA      = 12/* LTE/WCDMA */
  18. int NETWORK_MODE_TD_SCDMA_ONLY            = 13/* TD-SCDMA only */
  19. int NETWORK_MODE_TD_SCDMA_WCDMA           = 14/* TD-SCDMA and WCDMA */
  20. int NETWORK_MODE_TD_SCDMA_LTE             = 15/* TD-SCDMA and LTE */
  21. int NETWORK_MODE_TD_SCDMA_GSM             = 16/* TD-SCDMA and GSM */
  22. int NETWORK_MODE_TD_SCDMA_GSM_LTE         = 17/* TD-SCDMA,GSM and LTE */
  23. int NETWORK_MODE_TD_SCDMA_GSM_WCDMA       = 18/* TD-SCDMA, GSM/WCDMA */
  24. int NETWORK_MODE_TD_SCDMA_WCDMA_LTE       = 19/* TD-SCDMA, WCDMA and LTE */
  25. int NETWORK_MODE_TD_SCDMA_GSM_WCDMA_LTE   = 20/* TD-SCDMA, GSM/WCDMA and LTE */
  26. int NETWORK_MODE_TD_SCDMA_CDMA_EVDO_GSM_WCDMA  = 21/*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/
  27. int NETWORK_MODE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA = 22/* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and
  28.                                                            EvDo */

 

[java] view plain copy

  1. // Set the preferred network mode
  2. int defaultNetworkType = RILConstants.PREFERRED_NETWORK_MODE;
  3. int numPhones = MSimTelephonyManager.getDefault().getPhoneCount();
  4. String networkMode = SystemProperties.get(“ro.telephony.default_network”);
  5. if (networkMode != null) {
  6.     if (numPhones == MSimConstants.MAX_PHONE_COUNT_SINGLE_SIM) {
  7.         loadSetting(
  8.                 stmt,
  9.                 Settings.Global.PREFERRED_NETWORK_MODE,
  10.                 MSimTelephonyManager.getTelephonyProperty(
  11.                         “ro.telephony.default_network”0,
  12.                         Integer.toString(defaultNetworkType)));
  13.     } else {
  14.         loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, networkMode);
  15.                 }
  16. else {
  17.                 StringBuilder sb = new StringBuilder(defaultNetworkType);
  18.     for (int i = 0; i < numPhones – 1; i++) {
  19.         sb.append(“,”);
  20.        sb.append(RILConstants.NETWORK_MODE_GSM_ONLY);
  21.     }
  22.     loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, sb.toString());
  23. }

 

未經允許不得轉載:GoMCU » Android 首选网络模式默认值的修改方法