[java] 你如何在Android中獲得手機的MCC和MNC?


Answers

您知道有兩部MCC / MNC適用於有源手機嗎? (一個是Sim卡的國家代碼和運營商ID,另一個是正在使用的網絡/蜂窩塔。)

如果getResources().getConfiguration().mcc在飛行模式下不為空,則它是SimTelephonyManager.getSimOperator() ,而不是towerTelephonyManager.getNetworkOperator()

我不知道OP想要哪個,但如果getConfiguration真的是Sim值,那麼答案3會給他不同於原始代碼的結果。

Question

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

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

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




好的,事實證明getResources()。getConfiguration()。mcc技巧對於大多數目的來說可能更好,因為如果另一個人將手機置於飛行模式或以其他方式使用Wi-Fi,則返回空MCC。




getResources().getConfiguration().mcc是一個糟糕的選擇,因為它返回一個整數,因此會影響有效值,如01044 。 顯然整數不是一個好的選擇。

請參閱Mobile_Network_Code詳細信息

更新:在澳大利亞,我們在這裡驗證了一個錯誤的案例 getNetworkOperatorgetNetworkOperator返回不同的值,後者是正確的。

請參閱Android doc: TelephonyManager詳細信息




Links