安卓短信内容(content://sms/sent)

20

我在阅读设备上的短信消息时遇到了问题。 当从URI content://sms/inbox 获取内容提供者时,一切正常。我可以读取person列来查找外键以进入people表,最终到达联系人及其姓名。

然而,我还想遍历发送的短信。当从content://sms/sent中读取时,person字段总是为0。

这个字段是正确的吗?用于定位已发送消息的收件人数据?如果是-您有任何想法为什么我的值始终为0吗?

我在模拟器中进行了所有测试,并创建了3个联系人。我以正常方式向那些联系人发送消息。

再次强调,我可以看到4条发送的消息并读取相关的正文。我的问题是我似乎无法读取“person” ID,因此我无法确定收件人是谁。

1个回答

18

使用地址列。我猜想人员列被忽略了,因为人们可以向不在联系人列表中的电话号码发送短信。

// 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
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接