Java 通过电话号码获取联系人
我正在寻找一种通过提供一些电话号码来选择联系人的方法,例如,我想选择所有具有此电话号码(+1234567890)或(+1234567889)的联系人 因为联系人电话号码可以以不同的格式存储,所以我不能使用这种方法Java 通过电话号码获取联系人,java,android,performance,android-contacts,Java,Android,Performance,Android Contacts,我正在寻找一种通过提供一些电话号码来选择联系人的方法,例如,我想选择所有具有此电话号码(+1234567890)或(+1234567889)的联系人 因为联系人电话号码可以以不同的格式存储,所以我不能使用这种方法 contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.NUMBER + " in (?)", new
contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.NUMBER + " in (?)", new String[]{"(+1234567890,+1234567889"}, null);
我找到了一种方法,允许我按号码搜索联系人,但只提供一个号码,而不是列表,如下所示:
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
contentResolver.query(uri,null,
null,
null, null);
有没有办法为这个查询提供一个数字列表
我知道我可以选择所有的联系人,然后通过他们循环过滤,但速度慢,不推荐
任何建议都将不胜感激,谢谢。如果您担心不同的格式,您可能希望加载整个列表,对所有电话号码执行regex,然后以这种方式查找您的号码。这是因为SQLite在查询中不支持正则表达式,这是很不幸的。@tambykojak,但这会导致性能问题,这正是我试图避免的。我不会说它会导致性能问题。这不是一个理想的方案,但在我查看了联系人列表中的各种格式后,由于不支持regex,这是我想到的第一个解决方案。@tambykojak我想如果没有其他方法,那么是的,这应该是要使用的解决方案。