私はsimからユーザーの完全な電話番号を取得するアプリケーションを作成しています。私が持っている電話番号は061555555なので、それをサーバーに保存すると、次のようになります:+38761555555Androidで間違ったモバイルプレフィックスを取得する
ここに私の問題があります。下のコードを使用すると、次のようになります。+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ナショナル・ナンバー21890032555555」。 – Kemo
これは38が "simCountry"の国コードではないことを示しています。上のものはあなたのQと同じです。 – VVB
私の国コードは387ですが、私の国内番号(モバイルプレフィックス)は21890032ではなく61から始める必要があります。あなたの答えを正しく理解していない、私は再び私のコードを更新しました。あなたは私のコードエラーを教えてください。 – Kemo