2016-06-14 108 views
1

我在短信收件箱中使用此日期代码,但它显示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(); 
} 
+0

有一个回复预先感谢 –

+0

''date''列索引不是日期。 –

+0

评论变化 –

回答

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); 
+0

不幸的是,应用程序现在停止了 –

+0

这是什么错误? – smarx

+0

@ mgcaguioa的回答比我的回答更好......它也修正了您没有在实际循环中获取值的事实。 – smarx

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(); 
}