我使用Uri.parse(" content:// sms / inbox")来阅读短信,但我无法弄清楚如何阅读发件人的姓名。我遇到了类似的问题,但无法找到明确的答案,只能提出建议:
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null,null, null);
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
其中包含我的联系人姓名,但不是每条短信的具体名称。
顺便说一句,当我使用" body"时,它会向我显示我所有的短信历史记录。有没有办法检查:
messageString = cursor.getString(0); //let's say 0 is "body"
(messageString == "HI") txt.setText("BYE");
而不只是获取完整的收件箱内容?
答案 0 :(得分:1)
首先获取发件人电话号码,然后将发件人号码与联系人列表中的号码进行比较,如下所示:
Cursor phones = getContentResolver().query(ContactsContract.
CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.NUMBER));
if (phoneNumber.equals(senderphonenumber)){
//do something
}
}
phones.close();