如何获得短信的接收时间

时间:2015-09-20 10:10:19

标签: android smsmanager

我正在通过以下代码从特定号码读取未读短信。

public void getUnreadMessage() {
        Cursor smsInboxCursor1 = getContentResolver().query(
                Uri.parse("content://sms/inbox"), new String[] {},
                "read = 0 and address='" + pre_address + "'", null, null);
        int indexBody = smsInboxCursor1.getColumnIndex("body");
        int indexAddress = smsInboxCursor1.getColumnIndex("address");
        if (indexBody < 0 || !smsInboxCursor1.moveToFirst())
            return;
    //  arrayAdapter.clear();
        do {

            String str = "SMS From: " + smsInboxCursor1.getString(indexAddress)
                    + "\n" + smsInboxCursor1.getString(indexBody) + " \n";
            fromNumber = smsInboxCursor1.getString(indexAddress);
            smsBody.add(smsInboxCursor1.getString(indexBody));
            // arrayAdapter.add(str);
            status.add(false);

        } while (smsInboxCursor1.moveToNext());
    }

现在我想从这个特定号码获得接收短信的时间。我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:1)

有一个名为DATE的列,其中包含收到邮件的日期。您可以像已经检索的其他字段一样直接获取:

int indexData = smsInboxCursor1.getColumnIndex("data");

...

long dateReceived = smsInboxCursor1.getLong(indexData);

由于它是一个时间戳,您需要转换为人类可读的字符串。您可以使用以下代码执行此操作:

private String getDate(long time) {
    Calendar cal = Calendar.getInstance(Locale.ENGLISH);
    cal.setTimeInMillis(time);
    String date = DateFormat.format("dd-MM-yyyy HH:mm:ss", cal).toString();
    return date;
}