0

나는 country와 mobile 접두어를 포함하여 sim에서 사용자의 완전한 전화 번호를 얻을 수있는 앱을 만들고 있습니다. 내가 가진 전화 번호는 061555555입니다. 따라서 서버에 저장하면 다음과 같이 보일 것입니다 : +38761555555.안드로이드에서 틀린 모바일 접두사 받기

그리고 여기에 내 문제가 있습니다 - 아래 코드를 사용하면 다음과 같이 나타납니다 : +387218900032555555 즉, 이 061 대신 61이되면 218900032이됩니다. 나는 또한 thisthis을 시도

MyPhoneNumber = tMgr.getLine1Number(); 

:이 줄 번호는 잘못된 번호를 제공합니다. 난 당신이 대신 "COUNTRY_CODE"의 "national_number"을 구문 분석 생각

// Get users phone number 
private String getMyPhoneNumber() { 
    TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

    // Get the SIM country ISO code 
    String simCountry = tMgr.getSimCountryIso().toUpperCase(); 
    // Get the operator code of the active SIM (MCC + MNC) 
    String simOperatorCode = tMgr.getSimOperator(); 
    // Get the name of the SIM operator 
    String simOperatorName = tMgr.getSimOperatorName(); 
    // Get the SIM’s serial number 
    String simSerial = tMgr.getSimSerialNumber(); 

    String MyPhoneNumber = "0000000000"; 

    try { 
     MyPhoneNumber = tMgr.getLine1Number(); 
    } catch (NullPointerException ex) { 
    } 

    if (MyPhoneNumber.equals("")) { 
     MyPhoneNumber = tMgr.getSubscriberId(); 
    } 

    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
    Phonenumber.PhoneNumber countryNumberProto = null; 
    try { 
     countryNumberProto = phoneUtil.parse(MyPhoneNumber, simCountry); 
    } catch (NumberParseException e) { 
     System.err.println("NumberParseException was thrown: " + e.toString()); 
    } 

    String myPhone = phoneUtil.format(countryNumberProto, PhoneNumberUtil.PhoneNumberFormat.E164); 
    // I tried INTERNATIONAL and NATIONAL as well 

    return myPhone; 
} 

답변

1

:

이 내 코드입니다. 구문 분석 코드 논리를 필드 당신의 JSON을 확인

{ 
    "country_code": 41, 
    "national_number": 446681800 
} 

https://github.com/googlei18n/libphonenumber

+0

내가 얻는 것을 디버깅 할 때 다음과 같은 코드가 있습니다 : '국가 번호 : 387 National Number 21890032555555'. – Kemo

+0

38이 "simCountry"의 국가 코드가 아님을 나타냅니다. 위의 값은 귀하의 Q와 같습니다. – VVB

+0

내 국가 코드는 387이지만 내 국가 번호 (모바일 프리픽스)는 21890032 대신 61으로 시작해야합니다. 죄송합니다. 당신의 대답을 정확하게 이해하지 못하고, 제 코드를 다시 업데이트했습니다. 제 코드 오류를 알려주십시오. – Kemo

0
내 설정 -> 상태를 확인하고 내 전화 번호를 알 수없는, 대신이 IMEI를 표시 내 전화 번호, 그래서 나는 것 같아요 발견

수동으로 입력하여 사용자에게 전화 번호를 확인하게하십시오.