2011-11-28 1 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 주소 : ipinfodb과 같은 유용한 API가 있습니다.

위의 방법 중 하나를 수행했거나 더 나은 방법을 구현 한 사람이 있습니까?

도움 주셔서 감사합니다.

답변

1

이것은 CDMA에서 작동하지만 항상 그렇지는 않습니다 - 네트워크 사업자에 따라 다릅니다. 여기

이 도움이 보내는 SMS보고 또는이 장치의 전화 번호, 그런 다음 국제 전화 코드를 기반으로 CountryIso을 알아낼 수있는을 알아 내기 위해 호출 제안 alternative idea, ...

희망이다

+0

안녕하세요, 전화 번호를 알아 내려고합니다. 나는 이것에 의지하는 것이 더 쉽다고 생각한다. 고마워요! –

2

이 문제를 해결할 방법을 찾았습니다. CDMA 전화이면 GSM의 SIM 카드와 비슷한 ICC 하드웨어가 항상 있습니다. 하드웨어와 관련된 시스템 속성을 사용하면됩니다. 프로그래밍 방식으로 Java reflection을 사용하여이 정보를 얻을 수 있습니다. 이것은 시스템이 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