Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过电话号码获取联系人_Java_Android_Performance_Android Contacts - Fatal编程技术网

Java 通过电话号码获取联系人

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

我正在寻找一种通过提供一些电话号码来选择联系人的方法,例如,我想选择所有具有此电话号码(+1234567890)或(+1234567889)的联系人

因为联系人电话号码可以以不同的格式存储,所以我不能使用这种方法

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我想如果没有其他方法,那么是的,这应该是要使用的解决方案。