3

CDMA ネットワークで Android デバイスの国コード情報を取得するにはどうすればよいですか?

他のすべての場合は、そのためにTelephonyManagerを使用できます。

String countryCode = null;
TelephonyManager telMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (telMgr.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA)
    countryCode = telMgr.getNetworkCountryIso();
}
else {
    // Now what???
}

少し調べてみましたが、答えにつながる有益な情報は見つかりませんでした。

気になるいくつかのアイデア:

これらを使用できますか、それともより良いものがありますか?

4

3 に答える 3

2

私はこの問題に取り組む方法を見つけました...それがCDMA電話である場合、電話は常にGSMのSIMカードに匹敵するICCハードウェアを備えています。

あなたがしなければならないのは、ハードウェアに関連付けられたシステムプロパティを使用することだけです。プログラムでは、Javaリフレクションを使用してこの情報を取得できます。GSMデバイスとは異なり、システムがルート化されている場合でも、これは変更できません。

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);

// Gives MCC + MNC
String homeOperator = ((String) get.invoke(c, "ro.cdma.home.operator.numeric"));
String country = homeOperator.substring(0, 3); // The last three digits is MNC
于 2012-07-23T19:02:25.703 に答える
1

これはCDMAで機能しますが、常にではありません。ネットワークキャリアによって異なります。

これは別のアイデアです。これは、発信SMSまたは通話を調べて、このデバイスの電話番号を把握し、そこから国際ダイヤルコードに基づいてCountryIsoを把握することを提案します...

于 2011-12-01T14:56:18.587 に答える