我想将每个电话号码从设备转换为E164格式.所以,我在下面使用了opensource.
所以我就像这里一样使用它.
Phonenumber.PhoneNumber formattedNumber = null;
String formatted = null;
try {
formattedNumber = phoneUtil.parse(phoneNumber, "KR");
formatted = phoneUtil.format(formattedNumber,PhoneNumberUtil.PhoneNumberFormat.E164);
if (StringUtils.isEmpty(formatted) == false && formatted.length() > 0 && StringUtils.isEmpty(name) == false && name.length() > 0) {
listName.add(name);
listPhoneNumber.add(formatted);
}
} catch (NumberParseException e) {
continue;
}
Run Code Online (Sandbox Code Playgroud)
我读到这个库自4.0以来一直被Android框架使用.
Java版本针对在智能手机上运行进行了优化,并且自4.0以来由Android框架使用(Ice Cream Sandwich).
我想从Android SDK中使用它.所以我找到了这个.Android SDK提供此PhoneNumberUtils .
并且有一个功能
formatNumberToE164(String phoneNumber,String defaultCountryIso)
它真的很容易使用.但此功能的API级别为21.
所以我的问题是..如何在API Level 14(ICS)~21下使用PhoneNumberUtils将phonenumber转换为E164?
谢谢.!
我已经构建了一个应用程序,我在其中循环并收集用户的电话联系人,我的目标是然后使用这些号码并查询我的解析数据库并查找包含用户联系人的记录(这将检查是否有任何用户联系人是我的应用程序的用户,用户的电话号码将在他们注册时保存到我的解析数据库中)。我遇到的问题是,在收集用户联系人号码时,他们以不同的格式返回,有些是 +447966000000,有些是 07966000000,有些是 07 966000 000000 等等。
我的问题是,什么时候格式化我的号码的最佳方法是将它们保存到数据库并从用户联系人中检索它们,以便所有号码都以相同的格式保存和检索,以便当我对它们进行条件检查时,它们将很容易进行比较?
我已经下载了电话号码实用程序库,但我不确定库中的哪些内容可用于执行此类操作。
到目前为止的代码:
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getApplicationContext(),name + " " + phoneNumber, Toast.LENGTH_LONG).show();
}
phones.close();
Run Code Online (Sandbox Code Playgroud) 我正在使用Google的libphonenumber库来验证服务器端的电话号码,我注意到PhoneNumberUtil有两种方法可以做到这一点:isPossibleNumber和isValidNumber.它们之间有什么区别,我应该何时使用一个而不是另一个?