在Android中获取错误的移动前缀
我正在制作一个应用程序,我将从sim卡中获取用户的完整电话号码,包括国家和手机前缀。我的电话号码是061555555,所以当我将它保存到服务器时,它应该是这样的:+387615555 这是我的问题——当我使用下面的代码时,我得到了以下结果:+3872188900032555555,也就是说,不是061变成61,而是218900032。此行号给出了错误的号码:在Android中获取错误的移动前缀,android,telephonymanager,libphonenumber,phonenumberutils,Android,Telephonymanager,Libphonenumber,Phonenumberutils,我正在制作一个应用程序,我将从sim卡中获取用户的完整电话号码,包括国家和手机前缀。我的电话号码是061555555,所以当我将它保存到服务器时,它应该是这样的:+387615555 这是我的问题——当我使用下面的代码时,我得到了以下结果:+3872188900032555555,也就是说,不是061变成61,而是218900032。此行号给出了错误的号码: MyPhoneNumber = tMgr.getLine1Number(); 我也试过,也试过 这是我的代码: // Get user
MyPhoneNumber = tMgr.getLine1Number();
我也试过,也试过
这是我的代码:
// 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;
}
我想你是在解析“国家编号”而不是“国家代码”。检查JSON解析代码字段逻辑
{
"country_code": 41,
"national_number": 446681800
}
我检查了我的设置->状态,发现我的电话号码未知,它显示的不是我的电话号码而是IMEI,所以我想我会让用户手动输入来确认他的电话号码。当我调试时,我得到的是以下信息:
国家代码:387国家号码2189003255555
。这表示38不是“simCountry”的国家代码,上面的一个与您的Q相同。我的国家代码是387,但我的国家号码(手机前缀)应该以61开头,而不是21890032。对不起,如果我没有正确理解您的答案,我再次更新了代码。请您指出我的代码错误。这是您的JSON对象号{“代码”:“+387”,“名称”:“波斯尼亚和黑塞哥维那”}我建议您打印所有国家的JSON。它会给你一个想法,你的“模拟国家”有什么问题吗?