2011-11-28 92 views
4

有沒有人知道如何檢索在CDMA網絡下的Android設備的國家代碼信息?如何獲取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??? 
} 

我搜索了一下,但沒有找到,這將導致一個答案任何有用的信息。 一些想法一些人的頭腦:

  • GPS定位:你可以從GeoCoder得到國家;和
  • IP地址:有一些很好的API來獲取它,如ipinfodb

有沒有人做過上述方法之一,或實施更好的?

感謝您的幫助。

回答

1

它適用於CDMA,但並不總是 - 取決於網絡運營商。

下面是一個alternative idea,這表明看着傳出短信或電話要弄清楚這個設備的電話號碼,從基礎上的國際區號然後你可以找出CountryIso ...

希望這有助於

+0

嘿,這就是我正在做的手機號碼。我想現在依靠這個更容易。非常感謝! –

2

我找到了解決這個問題的方法..如果它是一個CDMA手機,那麼手機總是有一個ICC硬件媲美GSM SIM卡。你所要做的就是使用與硬件相關的系統屬性。以編程方式,您可以使用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 
+0

此答案不完整。 MCC和MNC是數字。問題與getNetworkCountryIso();相比,要求國家代碼;'所以基於字母的ISO國家代碼。 – user3175580