gpt4 book ai didi

android - 查询部分数据的联系人

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:21 25 4
gpt4 key购买 nike

我一直在尝试复制一些有关联系人匹配的 OEM 拨号器应用程序行为,但运气不佳。基本上,当用户在拨号程序中键入与电话号码和姓名相匹配的号码时,我想填充一个潜在的联系人匹配列表,就像大多数电话一样。例如,在拨号器中输入 323 会匹配号码中任何位置有 323 的联系人,例如 (323)123-4567 以及显示为 Dad 或 Daffy 等的 DISPLAY_NAME 的联系人。

我知道 ContactsContract.PhoneLookup.CONTENT_FILTER_URI 应该用于匹配电话号码而忽略格式(因此针对 5551234567 查询该 uri 将返回号码存储为 (555)123-4567 的联系人)。问题是我无法让它与部分数字一起使用,因此即使我添加带有 LIKE 子句和通配符的选择参数,对 5551 的查询也会包含相同的结果。如果我使用任何其他 URI,带有 LIKE 的选择 arg 将返回部分结果,但格式会搞砸,因此 5551 不匹配,只有 555)1 匹配。 任何人都可以解释我如何在忽略单个查询的格式的同时获得部分数字匹配吗?使用多个查询的其他尝试被证明太慢并且无法提供我在大多数手机上看到的体验(我注意到 Android 源代码中的标准拨号器不进行联系人匹配,只进行搜索,所以没有帮助)。

其次,对于事物的名称部分,我有一个可行的解决方案,尽管我不确定这是最好的策略。我曾希望使用 ContactsContract.Contacts.CONTENT_FILTER_URI,正如文档所说,这是你应该如何过滤结果以获取你输入的建议,但同样这只适用于单个部分名称的 alpha 搜索,而我需要翻译 323 以针对相关键盘字母(dad、dae、daf、ead、eae、eaf、fad 等)的所有组合的部分匹配进行搜索。我改为使用 ContactsContract.CommonDataKinds.Phone.CONTENT_URI 和选择参数,使用 LIKE 来匹配所有可能性,然后后续请求根据从前一个请求返回的联系人 ID 缩小字段。 有没有一种方法可以利用 ContactsContract.Contacts.CONTENT_FILTER_URI 进行这种类型的数字模式匹配?我没有尝试将其分解为多个请求,但基于延迟,我尝试了类似的部分上面描述的数字匹配,我怀疑它不会很好用。

非常感谢任何建议!

谢谢,斯科特

最佳答案

我已经为此苦苦挣扎了 2 天,我终于找到了一个符合我和 Scott 要求的解决方案。

你需要使用这个 URI

ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI 并附加 URI 路径,这是部分字符串(名称或号码)。

Uri uri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(partial));
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);

希望这对您有所帮助!

关于android - 查询部分数据的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com