Как получить доступ ко времени смс, которое я получил в папке «Входящие»?

Я могу прочитать сообщение из папки «Входящие» из этого: --

 Uri uriSMSURI = Uri.parse("content://sms/inbox");

 Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);

я получаю доступ к дате из этого: -

   date = cur.getString(cur.getColumnIndexOrThrow("date"));

Но теперь проблема в том, что он дает текущее время, а не время сообщения из почтового ящика. Извините за плохое редактирование, и любая идея будет оценена по достоинству. Заранее спасибо!


person Deepanker Chaudhary    schedule 30.10.2012    source источник
comment
начните с перечисления столбцов, чтобы увидеть, какие из них вас интересуют   -  person njzk2    schedule 30.10.2012


Ответы (2)


Используйте этот код:

ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query( Uri.parse( "content://sms/inbox" ), null, null, null, null);
cursor.moveToFirst();
String date =  cursor.getString(cursor.getColumnIndex("date"));
Long timestamp = Long.parseLong(date);    
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
Date finaldate = calendar.getTime();
String smsDate = finaldate.toString();
Log.d(Home.class.getName(), smsDate);
person Sunil Mishra    schedule 30.10.2012
comment
Могу ли я добавить что-то вроде этого? content://sms/today или content://sms/date=today - person Umar Asghar; 18.06.2016
comment
См. это: stackoverflow.com/questions/9713021 / И вместо того, чтобы использовать предложенный подход к форматированию даты, вы можете просто использовать значение времени в миллисекундах. - person Usman; 27.04.2017

В таблицах Sms даты хранятся как INTEGER в миллисекундах. Итак, используйте

millis = cur.getLong(cur.getColumnIndexOrThrow("date")) на курсоре.

Затем используйте

DateFormat.format("EEEE, MMMM dd, yyyy h:mm:ss aa", new Date(millis))

чтобы получить красивую читаемую строку.

person S.D.    schedule 30.10.2012