短信收件箱中的日期格式

时间:2016-06-14 07:31:08

标签: android date android-fragments

我在sms收件箱中使用此代码作为日期,但它显示所有短信的错误日期01/01/70如何更改正确?

public void refreshSmsInbox() {
    ContentResolver contentResolver = getActivity().getContentResolver();
    Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);

    int indexBody = smsInboxCursor.getColumnIndex("body");
    int indexAddress = smsInboxCursor.getColumnIndex("address");
    int timeMillis = smsInboxCursor.getColumnIndex("date");
    Date date = new Date(timeMillis);
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
    String dateText = format.format(date);

    if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
    arrayAdapter.clear();
    do {
        String str = smsInboxCursor.getString(indexAddress) +"  "+
                "\n" + smsInboxCursor.getString(indexBody) +"\n"+ dateText+"\n";
        arrayAdapter.add(str);
    } while (smsInboxCursor.moveToNext());
    smsInboxCursor.close();
}

2 个答案:

答案 0 :(得分:1)

@Mike M&的评论是正确的。您正在尝试将日期列的索引转换为日期格式。您实际上并没有转换日期的值。试试这个:

public void refreshSmsInbox() {

    ContentResolver contentResolver = getContentResolver();
    Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);

    // get the index of the column
    int indexBody = smsInboxCursor.getColumnIndex("body");
    int indexAddress = smsInboxCursor.getColumnIndex("address");
    int indexDate = smsInboxCursor.getColumnIndex("date");

    if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;

    // loop through the messages in inbox
    do {
        // get the value based on the index of the column
        String address = smsInboxCursor.getString(indexAddress);
        String body = smsInboxCursor.getString(indexBody);
        long date = smsInboxCursor.getLong(indexDate);

        // convert millis value to proper format
        Date dateVal = new Date(date);
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
        String dateText = format.format(dateVal);

        String str = address + "\n" + body + "\n" + dateText + "\n";
        System.out.println(str);

    } while (smsInboxCursor.moveToNext());

    smsInboxCursor.close();
}

答案 1 :(得分:0)

这部分错了:

int timeMillis = smsInboxCursor.getColumnIndex("date");
Date date = new Date(timeMillis);

getColumnIndex返回索引,而不是实际值。我想你想要这个,虽然我没有亲自测试过:

int dateIndex = smsInboxCursor.getColumnIndex("date");
long timeMillis = smsInboxCursor.getLong(dateIndex);
Date date = new Date(timeMillis);