我在从设备上阅读短信时遇到问题.当获取URI' content://sms/inbox
' 的内容提供者时,一切都很好,我可以阅读"人员"列,找到人员表中的外键并最终到达联系人及其姓名.
但是,我也想遍历发送的消息.从'content:// sms/sent'读取时,person字段始终显示为0.这是正确读取的字段,以查找已发送邮件的收件人数据吗?如果是这样 - 任何想法为什么我的总是0?
我的所有测试都是在模拟器中完成的,我创建了3个联系人.我以正常方式向您发送消息的模拟器发送了消息.
重申一下,我可以看到4个发送的消息,并阅读相关的正文.我的问题是我似乎无法阅读"人"ID,因此我无法确定收件人是谁.
任何帮助将不胜感激.
非常感谢,
马丁.
使用地址栏.我猜人员栏会被忽略,因为人们可以将短信发送到不在联系人列表中的电话号码.
// address contains the phone number Uri phoneUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, address); if (phoneUri != null) { Cursor phoneCursor = getContentResolver().query(phoneUri, new String[] {Phones._ID, Contacts.Phones.PERSON_ID}, null, null, null); if (phoneCursor.moveToFirst()) { long person = phonesCursor.getLong(1); // this is the person ID you need } }