我希望获取SMS收件箱的简单信息,即联系人姓名和邮件正文。
我能够获取正文,但联系人姓名为空白。
以下是代码段
String[] reqCols = new String[] { Telephony.Sms.Inbox._ID, Telephony.Sms.Inbox.PERSON, Telephony.Sms.Inbox.BODY };
// Get Content Resolver object, which will deal with Content Provider
ContentResolver cr = getContentResolver();
// Fetch Inbox SMS Message from Built-in Content Provider
Cursor c = cr.query(Telephony.Sms.Inbox.CONTENT_URI, reqCols, null, null, null);
// Attached Cursor with adapter and display in listview
adapter = new SimpleCursorAdapter(this, R.layout.row, c,
new String[] { Telephony.Sms.Inbox.BODY, Telephony.Sms.Inbox.PERSON}, new int[] {
R.id.lblMsg, R.id.lblNumber });
lvMsg.setAdapter(adapter);
在我的listview
中,我可以显示消息正文,但不能显示联系人姓名。
请注意,如果我改为使用“.ADDRESS”,则会成功显示联系号码。
有任何帮助吗?我已经拥有“READ_CONTACTS”权限。
编辑:我能想到解决这个问题的唯一方法是使用ContactsContract.PhoneLookup并使用电话号码查找联系人姓名。这似乎是一个需要太长时间的必要步骤。没有人有更好的解决方案?