2016-08-10 5 views
0

전화 번호 형식에 대한 질문이 있습니다. 안드로이드 장치에서 통화 기록을 읽으려고하면 두 형식으로 숫자가 표시됩니다. 국제 및 짧은 버전. 필자는 항상이 동작이 연락처가 연락처에 저장되는 형식의 영향을 받았다고 생각했습니다. 그러나 나는 더 이상 확신하지 못한다.통화 기록에서 국제 전화 번호를 얻는 방법

전화가 제공 업체에서 전체 형식을 가져올 수 없습니까? 그런 식으로 나에게 그것을 줄 수는 없습니까? 이 경우 공급자가 전체 형식을 제공하지 않는 조건에 대한 사양이 있습니까? 예를 들어 전화가 같은 나라에 있다면?

또는 공급자는 휴대 전화가 항상 전체 형식을 가지고 있으며 안드로이드가 나에게서 그것을 숨길 수 있습니다.

내가 얻을 필요가있는 궁극적 인 상태는 국제 전화 형식의 모든 전화 번호입니다. 그러나 그것은 나를 위해 불가능합니다. 나는 모든 숫자에 대해 국가 정보를 갖고 있지 않다.

답변

0

예, 제공 업체에 따라 다릅니다. 일부는 국제 번호를, 일부는 국제 번호를 전송합니다.

후자의 경우 가장 좋은 추측을 할 수 있습니다. 국제 번호가 아닌 국가의 경우 다음 방법을 사용했습니다. 현재 네트워크 공급자의 국가 코드를 사용합니다. 사용할 수없는 경우 SIM 카드의 국가 코드를 사용하십시오. 사용할 수없는 경우 현재 로캘의 국가 코드를 사용합니다.

TelephonyManager tm = (TelephonyManager) getActivity() 
     .getSystemService(Context.TELEPHONY_SERVICE); 
String countryISOCode = tm.getNetworkCountryIso().toUpperCase(Locale.US); 
if (countryISOCode.isEmpty()) { // when not connected fall back to the SIM's country 
    countryISOCode = tm.getSimCountryIso().toUpperCase(Locale.US); 
} 
if (countryISOCode.isEmpty()) { // when even no SIM, get the countrycode from the locale 
    countryISOCode = Locale.getDefault().getCountry(); 
} 
+0

감사 :

또는 안드로이드 코드

. 그러나 연락처 목록은 어떻습니까? 너무 중요합니까? 내가 짧은 형식의 숫자를 가지고 있다면, 안드로이드가 그것을 사용하는 것보다 더 좋습니까? 관측을 기반으로 하나의 장치에서 두 형식의 숫자를 얻을 수 있습니다. –

+0

나는 그것을 완전히 이해하지 못한다. 연락처 목록에있는 전화 번호는 당신이 입력 한 형식으로되어 있습니다 ... –

+0

예, 사용자는 형식을 지정할 수 있지만 국제화해야합니다. 문제는 연락처 목록에 사용자가 번호를 저장하는 형식이 어떻게 든 프로세스의 일부인지 여부입니다. –