나는 country와 mobile 접두어를 포함하여 sim에서 사용자의 완전한 전화 번호를 얻을 수있는 앱을 만들고 있습니다. 내가 가진 전화 번호는 061555555입니다. 따라서 서버에 저장하면 다음과 같이 보일 것입니다 : +38761555555.안드로이드에서 틀린 모바일 접두사 받기
그리고 여기에 내 문제가 있습니다 - 아래 코드를 사용하면 다음과 같이 나타납니다 : +387218900032555555 즉, 이 061 대신 61이되면 218900032이됩니다. 나는 또한 this 및 this을 시도
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;
}
내가 얻는 것을 디버깅 할 때 다음과 같은 코드가 있습니다 : '국가 번호 : 387 National Number 21890032555555'. – Kemo
38이 "simCountry"의 국가 코드가 아님을 나타냅니다. 위의 값은 귀하의 Q와 같습니다. – VVB
내 국가 코드는 387이지만 내 국가 번호 (모바일 프리픽스)는 21890032 대신 61으로 시작해야합니다. 죄송합니다. 당신의 대답을 정확하게 이해하지 못하고, 제 코드를 다시 업데이트했습니다. 제 코드 오류를 알려주십시오. – Kemo