我怎么知道一个号码有国家代码?

时间:2016-04-20 15:44:50

标签: phone-number

我正在使用电话号码进行注册。系统与whatsapp完全相同。

  1. 用户写下他的号码。
  2. 服务器向此号码发送短信
  3. 用户验证他的号码。
  4. 然后,用户的地址簿会发送给服务器,以便找到他的朋友。
  5. 问题从这里开始。这将是一个国际应用程序。你知道每个国家都有不同的电话号码格式。我将存储所有这些数字: 123456789

    如果用户已经将国家/地区代码放在号码的头部,则没有问题。但如果他不知道我该怎么办?我怎么知道一个号码有国家代码?如果我知道,那么我可以把地址簿的所有者的国家代码。因为如果一个号码没有国家代码,那么他们就住在同一个国家。

1 个答案:

答案 0 :(得分:0)

使用此代码片段并记得添加libphonenumber 8.8.1库:

//Get the International Code
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneNumberUtil mPhone = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber mNumber;

//Get the phone no
EditText editText = (EditText) findViewById(R.id.usr_phone_no);
//Remove all 0's in the left and non-numeral characters and parse it to an international number format
String userPhoneNumber = Long.valueOf(editText.getText().toString().replaceAll("[^\\d]", "")).toString();
mNumber = mPhone.parse(userPhoneNumber, tm.getSimCountryIso().toUpperCase());

//Transform it the way you will use it (In this case, Long)
Long phoneNumber = Long.valueOf(String.format("%d%d",mNumber.getCountryCode(),mNumber.getNationalNumber()));