gee*_*aul 6 android contactscontract libphonenumber
我使用以下代码从手机中检索联系号码列表:
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)));
}
Run Code Online (Sandbox Code Playgroud)
在API 16及更高版本中,这对我来说非常有用,因为我想要所有以E 164格式格式化的联系人,无论用户如何存储它们.
但是,对于16以下的API,上述代码将无法使用,我无法使用以下行获取所有联系人的E 164格式:
c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Run Code Online (Sandbox Code Playgroud)'PhoneNumberUtils'类无法使用.
另外,我不能使用libphonenumber库将数字转换为E 164格式,因为我不知道联系人的ISO 3166-1双字母国家代码.
有什么方法可以为Android中的每个联系人获取ISO 3166-1双字母国家/地区代码,以便我可以使用libphonenumber库?
或者是否有任何其他解决方案来实现第1点.
从手机检索的数字可以是任何格式,例如.
而E 164是+ 91XXXXXXXXXX,其中91是国家代码.
任何帮助将非常感激 !
您可以使用默认国家/地区代码的网络语言,可使用getNetworkCountryIso。此方法在 CDMA 网络上可能不可靠(用于getPhoneType确定是否在 CDMA 网络上)。
该值与给联系人打电话时使用的值相同,因此您应该获得正确的值。
对于本地到国家号码,我无法帮助您,因为我在我的国家/地区没有此类功能,也不知道它在您的国家/地区如何运作。
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |