寻找 Telephony.Sms 和 CallLog.Calls 之间的通用联系人 ID
Posted
技术标签:
【中文标题】寻找 Telephony.Sms 和 CallLog.Calls 之间的通用联系人 ID【英文标题】:Looking for a common Contact ID between Telephony.Sms and CallLog.Calls 【发布时间】:2015-09-09 00:34:45 【问题描述】:目标:我正在尝试将来自相同(已知)联系人的短信和电话分组。
我使用Telephony.Sms.Inbox.CONTENT_URI
和Telephone.Sms.Sent.CONTENT_URI
阅读短信。
我使用CallLog.Calls.CONTENT_UTI
读取呼叫。
我通过关注android is CallLog.Calls._ID the same with the contact id?获取联系人的ID:使用Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, phoneNumber)
。
现在,有了这个PhoneLookup._ID
,我想列出该联系人的短信。
遗憾的是,Telephony.Sms.PERSON
似乎没有存储相同的联系人 ID。
问题:我如何列出来自 PhoneLookup._ID
的短信,或者如果不可能,我怎样才能实现我想要的:列出来自同一联系人的短信和电话。
PS:Telephony.TextBasedSmsColumns.PERSON
似乎是指已弃用的Contacts.People
API...
【问题讨论】:
【参考方案1】:Telephony.Sms.PERSON
实际上匹配 ContactsContract.DataColumns.RAW_CONTACT_ID
。
所以我用了:
final Cursor cursor = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
projection, selection, null, null);
阅读ContactsContract.DataColumns.RAW_CONTACT_ID
。
https://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html#RAW_CONTACT_ID
【讨论】:
以上是关于寻找 Telephony.Sms 和 CallLog.Calls 之间的通用联系人 ID的主要内容,如果未能解决你的问题,请参考以下文章
Telephony.Sms.Inbox.PERSON 使用已弃用的 Contacts.People._ID
android.provider.Telephony.SMS_RECEIVED 的广播者权限
如何使用 Telephony.Sms 仅检索每个对话的最后一条消息,包括锁定的消息?