0

次のコードがあります。

Uri uriSMS = Uri.parse("content://sms");
Cursor cur = getContentResolver().query(uriSMS, 
        new String[] {"_id", "thread_id", "address", "person", "date", "body", "type"},
        null, null, null);
startManagingCursor(cur);

String[] from = new String[]{"address", "body", "date"};
int[] to = new int[]{R.id.sms_from, R.id.sms_body, R.id.sms_date};
adapter = new SimpleCursorAdapter(this, R.layout.sms_row, cur, from, to);

setListAdapter(adapter);

現在address、SMSの差出人を表示するカラムを使用しているため、tel番号が表示されます。電話番号を個人名に置き換えたいです。それが含まれていると思っていましたpersonが、ほとんどの SMS では空です。次に、フォーマットで表示したい場合、dateフィールドには値が含まれます。オーバーライドして修正できると思います。しかし、他の(より良い)解決策はありますか?longDD.MM.YYYYsetViewValue()

これら2つの問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

日付の問題を解決するには、これを行うことができます

    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    formatter.format( Long.parseLong( dateString ) );  

送信者名については、これを試してください

    Cursor cs= context.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},condition,null,null);  
    cs.getString(cs.getColumnIndex(PhoneLookup.DISPLAY_NAME));
于 2013-10-15T20:06:03.293 に答える
0

person連絡先に存在しない番号は空 だと思います。

日付:

String strDateTime = (String) DateFormat.format("yyyy-MM-dd kk:mm", new Date(longValue));
于 2013-10-15T20:02:11.833 に答える
-1

SMS で適切な日付と時刻を表示するには、この方法を試してください。これで、カーソルから受け取った日付を渡す必要があります

public String changeDate(long date) {
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date dt = new Date(date);
        Date now = new Date();
        dt.setTime(date);

        if (now.getYear()==dt.getYear() && now.getMonth()==dt.getMonth() && now.getDate()==dt.getDate())
            sdf.applyPattern("h:mm a");
        else if (now.getYear()==dt.getYear())
            sdf.applyPattern("d MMM" + " " + "h:mm a");
        else
            sdf.applyPattern("d MMM yyyy" + " " + "h:mm a");

        return sdf.format(dt);
    }
于 2017-09-21T17:28:28.430 に答える