2

AndroidのMMS-SMSをクエリする場合Content Provider、日付列には、SMSとは対照的にMMSの異なるエポック時間値があります。

ContentResolver contentResolver = getContentResolver();
final String[] projection = new String[] { "body", "person", "sub",
            "subject", "retr_st", "type", "date" + " as " + "d", "ct_cls", "sub_cs",
            "_id", "read", "ct_l", "st", "msg_box", "reply_path_present",
            "m_cls", "read_status", "ct_t", "status", "retr_txt_cs",
            "d_rpt", "error_code", "m_id", "date_sent", "m_type", "v",
            "exp", "pri", "service_center", "address", "rr", "rpt_a",
            "resp_txt", "locked", "resp_st", "m_size" };
String sortOrder = "date";
Uri uri = Uri.parse("content://mms-sms/conversations/");
Cursor c = contentResolver.query(uri, projection, null, null, sortOrder);

String messageDate = c.getString(c.getColumnIndex("date"));

の場合MMS、messageDate変数に保存されるエポック時間は10桁の長さです。ただし、の場合SMS、messageDate変数に保存されるエポック時間は13桁の長さです。

MMSこれは、日付で並べ替えるとメッセージがメッセージの前に表示されるため、日付で並べ替えるときに問題になりSMSます。

これを照会してContent Provider、すべてのメッセージ(MMSまたはSMS)を日付で正しくソートする方法はありますか?

4

1 に答える 1

2

メッセージがMMSであるかSMSであるかに関係なく、日付でメッセージを並べ替える方法は、並べ替え順序をnormalized_date次のように変更することのようです。

String sortOrder = "normalized_date";
于 2013-01-06T07:12:06.130 に答える