我使用以下代码从电话中检索联系人号码列表:
Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while(c.moveToNext()){
Log.d(TAG,"NO.: "+ c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)));
}
在 API 16 及更高版本中,这对我来说非常有用,因为我希望所有联系人都以 E 164 格式格式化,无论用户如何存储它们。
但是,对于低于 16 的 API,上述代码将不起作用,并且我无法使用以下行获取所有联系人的 E 164 格式:
c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
“PhoneNumberUtils”类不能派上用场。
此外,我无法使用libphonenumber库将数字转换为 E 164 格式,因为我不知道联系人的 ISO 3166-1 两个字母国家代码。
有什么方法可以为 Android 中的每个联系人获取 ISO 3166-1 两个字母的国家/地区代码,以便我可以使用 libphonenumber 库?
或者是否有任何其他解决方案可以实现第 1 点。?
从电话中检索到的号码可以是任何格式,例如。
- 本地 : 965XXXXXXX
- 国家 : 0965XXXXXXX
- 国际:+91 96 5X XXXXXX
- 和别的
而 E 164 是 +91XXXXXXXXXX,其中 91 是国家代码。
任何帮助将非常感激 !