我可以从收件箱中读取消息: -
Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);
我从这里访问日期: -
date = cur.getString(cur.getColumnIndexOrThrow("date"));
但现在的问题是它从收件箱中提供当前时间而非消息时间。 对不起编辑错误&任何想法将不胜感激。 在此先感谢!
答案 0 :(得分:12)
使用此代码:
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);
答案 1 :(得分:7)
在Sms表中,日期以毫秒为单位存储为INTEGER。所以,使用
光标上的 millis = cur.getLong(cur.getColumnIndexOrThrow("date"))
。
然后,使用
DateFormat.format("EEEE, MMMM dd, yyyy h:mm:ss aa", new Date(millis))
获得一个很好的可读字符串。
答案 2 :(得分:3)
/**
* Read messages of respective phone number from msg
*
* @param activity
* @param ph_number
* @return
*/
public static void getMessageDetails(Activity activity, String ph_number) {
String forDelete_thread_id = "";
String forDelete_id = "";
String address = ph_number;
Uri allMsg = Uri.parse("content://sms/");
Cursor managedCursor = activity.getContentResolver().query(
allMsg,
new String[] { "_id", "thread_id", "address", "date", "body",
"type" }, "address=?", new String[] { address }, null);
while (managedCursor.moveToNext()) {
String msg_id = managedCursor.getString(0);
String thread_id = managedCursor.getString(1);
String address_b = managedCursor.getString(2);
String date = managedCursor.getString(3);
String msg_body = managedCursor.getString(4);
String type = managedCursor.getString(5);
}
}