java android關係 - 你如何在Android中獲得手機的MCC和MNC?




4 Answers

TelephonyManager有一種方法可以將MCC + MNC作為String( getNetworkOperator() )返回,它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));
    }
}
sdk developer

我發現檢索MCC和MNC的唯一方法是覆蓋一個活動的onConfigurationChanged方法,如下:

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

但是,一旦應用程序啟動,我就需要這些數據,並且無法等待用戶切換手機的方向或等效觸發此方法。 有沒有更好的方法來訪問當前的Configuration對象?




您可以通過getResources().getConfiguration()訪問當前配置getResources().getConfiguration()可以解決問題。




我發現即使插入了SIM卡,網絡運營商有時可能會像[email protected]那樣未連接到運營商(服務不可用)。 這發生在運行Android 4.1.2的三星S2上。

因此在轉換為Int時必須小心。

 int mcc = Integer.parseInt(networkOperator.substring(0, 3));



這是更新的。 用這個

 TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String networkOperator = tel.getSimOperator();
    System.out.println("************mnc,mcc"+networkOperator);
    if (!TextUtils.isEmpty(networkOperator)) {
         mcc = networkOperator.substring(0, 3);
       mnc = networkOperator.substring(3);System.out.println("************mnc,mcc"+mnc+mcc);
    }mnc_mcc.setText("************mnc,mcc"+mnc+","+mcc);
}



Related

java android mobile