how do you get the phone's MCC and MNC in Android?
The TelephonyManager has a method to return the MCC+MNC as a String (getNetworkOperator()) which will do you what you want. You can get access it via:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String networkOperator = tel.getNetworkOperator(); if (!TextUtils.isEmpty(networkOperator)) { int mcc = Integer.parseInt(networkOperator.substring(0, 3)); int mnc = Integer.parseInt(networkOperator.substring(3)); }}
You do know there are two MCC/MNC's for an active phone? (One is the country code and carrier id for the Sim card, the other is for the network/cell tower in use.)
If the getResources().getConfiguration().mcc
is not empty in airplane mode, it's the Sim
value TelephonyManager.getSimOperator()
, not the tower
value TelephonyManager.getNetworkOperator()
.
I don't know which the OP wants, but Answer 3 will give him different results than his original code if the getConfiguration
is really the Sim
values.
getResources().getConfiguration().mcc
is a bad choice because it returns an integer, hence compromising valid values such as 01
, or 044
. Clearly integer is not a good option for this.
See details in Mobile_Network_Code
Update: in Australia, we verified a wrong case here. The getNetworkOperator
returns different value from getSimOperator
, where the latter is correct.
See details in Android doc: TelephonyManager