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

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

但是,我需要在应用启动后立即获取这些数据,不能等待用户切换手机的方向或等效方式来触发此方法。有没有更好的方法来访问当前的Configuration对象?

最佳答案

TelephonyManager提供了一种方法,可以将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));
    }
}

08-07 22:38