I want to change the preferred network mode ie. gsm or wcdma or auto, programmatically, from code, on Android.
Is this possible, and if so how ?
This is not an answer, but expanding on Tulio-F's answer.
The RILConstants.java contain the following:
// 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)**
int NETWORK_MODE_CDMA = 4; // CDMA and EvDo (auto mode, according to PRL)**
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)**
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_CDMA_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 NETWORK_MODE_TDSCDMA_ONLY = 13; // TD-SCDMA only
int NETWORK_MODE_TDSCDMA_WCDMA = 14; // TD-SCDMA and WCDMA
int NETWORK_MODE_LTE_TDSCDMA = 15; // TD-SCDMA and LTE
int NETWORK_MODE_TDSCDMA_GSM = 16; // TD-SCDMA and GSM
int NETWORK_MODE_LTE_TDSCDMA_GSM = 17; // TD-SCDMA,GSM and LTE
int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18; // TD-SCDMA, GSM/WCDMA
int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19; // TD-SCDMA, WCDMA and LTE
int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20; // TD-SCDMA, GSM/WCDMA and LTE
int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21; // TD-SCDMA,EvDo,CDMA,GSM/WCDMA
int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; // TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo
int PREFERRED_NETWORK_MODE = SystemProperties.getInt("ro.telephony.default_network", NETWORK_MODE_WCDMA_PREF);
Where:
** = "AVAILABLE Application Settings menu"