2012-03-15 62 views
1

我試圖讀取日期後收到的所有短信。在日期後收到短信

下面是代碼:

Uri SMS_CONTENT_URI = Uri.parse("content://sms"); 
Uri SMS_INBOX_CONTENT_URI = Uri.withAppendedPath(SMS_CONTENT_URI, "inbox"); 

Cursor cursor = context.getContentResolver().query(SMS_INBOX_CONTENT_URI, new String[] { "_id" }, "date>=61291393200000", null, null); 
//61291393200000 = 03/01/12 

這將返回我一個空指針。

當我執行此代碼:

Cursor cursor = context.getContentResolver().query(SMS_INBOX_CONTENT_URI, new String[] { "_id" }, "read=1", null, null); 

返航我所有的短信。

有人知道如何按日期篩選短信?

我試圖在發送短信中執行,但也有同樣的問題。

回答

7

我使用以下代碼在特定日期後檢索短信。

// First select the date shown by the datepicker. 
// Here I am assuming that a DatePicker object is already created with id dpResult 
// to select a particular date. 
DatePicker datePicker = (DatePicker) findViewById(R.id.dpResult); 


// Now create a SimpleDateFormat object.   
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

// Add 1 in month as its 0 based indexing in datePicker but not in SimpleDateFormat 
String selectedDate = datePicker.getYear() + "-" + (datePicker.getMonth() + 1) + "-" + datePicker.getDayOfMonth(); 

// Now create a start time for this date in order to setup the filter. 
Date dateStart = formatter.parse(selectedDate + "T00:00:00"); 

// Now create the filter and query the messages. 
String filter = "date>=" + dateStart.getTime(); 
final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 
Cursor cursor = getContentResolver().query(SMS_INBOX, null, filter, null, null); 

while(cursor.moveToNext()) { 

    // Perform the required stuff here.    
} 
cursor.close(); 

了從以上http://realembed.blogspot.com/2013/11/retrieve-sms-message-on-particular-date.html

+0

我不再使用該項目,但代碼對我來說似乎沒問題。因此,我接受了答案。 – jonathanrz 2013-12-01 17:46:02

1

你試過「date> ='61291393200000'」嗎?

看起來像數值SQL語句需要一個報價'xxx'。

+0

代碼段不工作:/。 但是,無論如何,謝謝。 – jonathanrz 2012-03-15 09:47:40