gpt4 book ai didi

android - Android上如何查询ContactsContract.CommonDataKinds.Phone?

转载 作者:行者123 更新时间:2023-11-29 22:32:37 24 4
gpt4 key购买 nike

我正在尝试为 SMS 消息构建对话列表。因此,我正在阅读“content://sms/conversations”并阅读每个对话的前几条消息以查找通信伙伴的电话号码。使用这些数字,我尝试从 ContactsContract.CommonDataKinds.Phone 中检索 contact_id,以从联系人数据库中获取此人的其余信息。

String[] returnVals = new String[] {ContactsContract.CommonDataKinds.Phone.CONTACT_ID};
Cursor pCur = thisContent.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
returnVals,
ContactsContract.CommonDataKinds.Phone.DATA1 + " = \"" + phoneNumber + "\"",
null,
null);

当我轮流浏览此查询的结果时,我发现有些联系人未找到,尽管它们存储在联系人数据库中。例如,与我的联系人列表之一相关联且位于似乎以破折号存储的美国的一个号码。我知道这可能是个问题,但我从线程中提取的其他数字按照它们在短信中的显示方式存储,但仍然找不到。

所以我的问题是:

  1. 这是正确的方法吗?我错过了什么吗?有没有更简单的方法来实现这一目标?
  2. 我将从 ContactsContract.CommonDataKinds.Phone 得到的是对联系人 _ID 的引用。我想我无法像处理适当的 long 类型 _ID 那样处理它,但我需要怎么做?
  3. 除了 SDK 的文档外,是否有关于 Android 中 SMS 处理的教程,这些教程是关于像这样的周边任务的?

最佳答案

你应该看看推荐的ContactsContract.PhoneLookup供应商

表示查找电话号码(例如来电显示)结果的表格。要执行查找,您必须将要查找的号码附加到 CONTENT_FILTER_URI。此查询经过高度优化。

Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,...

关于android - Android上如何查询ContactsContract.CommonDataKinds.Phone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3486569/

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