Contacts 按电话号码列出的唯一联系人

Contacts 按电话号码列出的唯一联系人,contacts,android-contacts,Contacts,Android Contacts,如何按手机号码筛选联系人,如聊天应用程序。如果通讯录数据库中储存的手机号码有两次按国家/地区代码和无国家/地区代码。我需要将两个号码合并为一个联系人 比如说,, 我与9876543210和+919876543210保存了一个联系人Bala。在这种情况下,我需要过滤两个号码并将+919876543210号码返回到我的应用程序数据库。您需要将所有电话号码转换为E164格式(带国家代码,无空格或破折号) e、 g:+12125551234 如果您的目标是API级别21及以上,只需执行以下操作: Str

如何按手机号码筛选联系人,如聊天应用程序。如果通讯录数据库中储存的手机号码有两次按国家/地区代码和无国家/地区代码。我需要将两个号码合并为一个联系人

比如说,,
我与9876543210和+919876543210保存了一个联系人Bala。在这种情况下,我需要过滤两个号码并将+919876543210号码返回到我的应用程序数据库。

您需要将所有电话号码转换为E164格式(带国家代码,无空格或破折号) e、 g:+12125551234

如果您的目标是API级别21及以上,只需执行以下操作:

String e164 = PhoneNumberUtils.formatNumberToE164(originalNumber, countryCode);
要获取国家/地区代码,请尝试以下操作:

TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = telephony.getSimCountryIso().toUpperCase();
如果你的目标api级别低于21,你可以使用谷歌的类似api


如果所有电话都被标准化为E164格式,您可以通过简单地不向联系人添加新电话来删除重复的电话,以防联系人已经有了该电话(您可能会发现这很有用)

如果联系人有两个不同的电话,您想在列表中添加两个条目吗?另外,如果为两个不同的联系人储存了同一部手机,是否需要两个条目?否,我需要过滤单个号码。如果他们用国家代码保存意味着我需要取那个联系人