how do you get the phone's MCC and MNC in Android? how do you get the phone's MCC and MNC in Android? java java

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