2016-06-14 29 views
1

私はこのコードをSMS受信トレイの日付に使用しますが、すべてのSMSに対して01/01/70の日付が間違っています。SMS形式の日付形式

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

日付の列のインデックスは日付ではありません。 –

+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

@MikeMのコメントは正しくありませんでした。日付列のインデックスを日付形式に変換しようとしています。あなたは実際に日付の値を変換していません。これを試してください:

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