如何在Android中获得手机的MCC和MNC?

2022-08-31 17:27:40

我发现检索MCC和MNC的唯一方法是重写活动的onConfigurationChanged方法,如下所示:

public void onConfigurationChanged(Configuration config)
{
    super.onConfigurationChanged(config);
    DeviceData.MCC = "" + config.mcc;
    DeviceData.MNC = ""  +config.mnc;
}

但是,一旦应用启动,我就需要此数据,并且不能等待用户切换手机的方向或等效项来触发此方法。有没有更好的方法来访问当前的配置对象?


答案 1

电话管理器有一个方法将MCC + MNC作为字符串(getNetworkOperator())返回,这将满足您的需求。您可以通过以下方式访问它:

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));
    }
}

答案 2

您知道有两个MCC / MNC用于活动电话吗?(一个是SIM卡的国家代码和运营商ID,另一个是正在使用的网络/蜂窝塔。

如果在飞行模式下不为空,则它是 值 ,而不是值 。getResources().getConfiguration().mccSimTelephonyManager.getSimOperator()towerTelephonyManager.getNetworkOperator()

我不知道OP想要哪个,但是如果真的是值,答案3会给他与原始代码不同的结果。getConfigurationSim


推荐