要在我们的应用程序中预先填写电话号码字段,我们要使用SIM存储的电话号码(如果可用)。为此,我们使用了in this popular question/answer概述的通用解决方案:
TelephonyManager tMgr = (TelephonyManager) mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
然而,问题是这个字符串还包含国际拨号前缀,即如下所示:
'+[prefix][phoneNumber]'
由于prefix
变化between 1 and 3 digits,我们无法简单地修剪它......
- > 有没有办法从SIM 获取电话号码而不用国家/地区拨号前缀?
答案 0 :(得分:1)
您可以使用libphonenumber-android获取数字,如下所示:
PhoneNumberUtil util = PhoneNumberUtil.createInstance(getApplicationContext());
try {
// Indonesia phone number
final Phonenumber.PhoneNumber phoneNumber = util.parse("+62821234567", "ID");
// now you get the number without country code
long nationalNumber = phoneNumber.getNationalNumber();
} catch (NumberParseException e) {
e.printStackTrace();
}
我还没有测试过代码。