如何使用uriSMSURI从收件箱中提取未读邮件?

时间:2018-07-30 07:30:25

标签: java sms

我的代码在这里

Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null);

要获取我正在使用的消息

 while (cur.moveToNext()) {
          sms +=cur.getString(2) + " : " +
          cur.getString(13).replace("  "," ") + " : " +cur.getString(14) +"\n\n\n";

    }

在上面的cur.getString(int id)中,第二个索引是发件人,第13个索引是邮件,第14个是号码。我对未读邮件感到困惑。

1 个答案:

答案 0 :(得分:0)

这里

https://developer.android.com/reference/android/provider/Telephony.TextBasedSmsColumns.html

是所有列的描述。您需要“读取”列。如果它为零-这是未读的消息。

使用方法:

ContentResolver cr = getContentResolver();
Uri inboxURI = Uri.parse("content://sms/");
Cursor c = cr.query(inboxURI, null, null, null, null);
if (c!=null) {
    int columnAddress   = c.getColumnIndex("address");
    int columnBody      = c.getColumnIndex("body");
    int columnRead      = c.getColumnIndex("read");

    while (c.moveToNext()) {
        String smsFrom = c.getString(columnAddress);
        String smsBody = c.getString(columnBody);
        int smsRead = c.getInt(columnRead);
        if (smsRead == 0) {
        // message unread
        } else {
        // message read
        }
    }
}