2013-09-30 26 views
0

我想在指定日期之後獲取設備的消息(兩者均已收到&已收到)。我正在使用以下邏輯來獲取消息,但我無法爲where條件編寫邏輯。我該如何解決這個問題?如何在Android中的指定日期之後以編程方式從Android設備獲取消息

Uri uriSMSURI = Uri.parse("content://sms/"); 
String WHERE_CONDITION=""; 
//Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null); 

Cursor cur = getContentResolver().query(uriSMSURI, 
new String[] { "_id", "thread_id", "address", "person", "date", "body" }, 
       WHERE_CONDITION, 
       null, null); 

while (cur.moveToNext()) { 
    address.add(cur.getString(cur.getColumnIndex("address"))); 
    body.add(cur.getString(cur.getColumnIndex("body"))); 
    id.add(cur.getString(cur.getColumnIndex("_id"))); 
    date.add(cur.getString(cur.getColumnIndex("date"))); 
} 
+0

你會得到所有數據,以便以後而已。使日期字段查詢顯示該日期之間的數據.. –

+0

以及你可以嘗試這樣的事情 - \t \t \t \t光標CUR = getContentResolver()。查詢(uriSMSURI, \t \t \t \t新的String [] { 「_id」, 「的thread_id」, 「地址」, 「人」, 「日」, 「體」}, \t \t \t \t '12/1/2012'和'1/2/2013'之間的日期, \t \t \t \t \t null,null); –

回答

2

您可以使用java.util.Date對象:

Date date = new Date(113,9,1,0,0,0); // 2013/10/01 00:00:00 
long time = date.getTime(); 
Uri uriSMSURI = Uri.parse("content://sms/"); 
String WHERE_CONDITION="date >= ?"; 

Cursor cur = getContentResolver().query(uriSMSURI, 
new String[] { "_id", "thread_id", "address", "person", "date", "body" }, 
       WHERE_CONDITION, 
       new String[] { Long.toString(time) }, null); 

     while (cur.moveToNext()) { 
     address.add(cur.getString(cur.getColumnIndex("address"))); 
     body.add(cur.getString(cur.getColumnIndex("body"))); 
     id.add(cur.getString(cur.getColumnIndex("_id"))); 
     date.add(cur.getString(cur.getColumnIndex("date"))); 

      } 
2

以下是爲您的查詢的步驟。

date.add(cur.getString(cur.getColumnIndex("date"))); 

此代碼以長格式返回日期。

1:將此長代碼轉換爲正確的日期格式。

long dateInLong=long.parseLong(date.add(cur.getString(cur.getColumnIndex("date")))); 
String msgDate=DateFormat.format("MM/dd/yyyy",dateInLong).toString; 

2:在光標-compare您的日期,這msgDate,並表明遵守要求

SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy"); 
Date d1= sdf.parse(msgDate); 
Date d2=sdf.parse("your date in MM/dd/yyyy format"); 
if(d1.compareTo(d2)>0){ 
Log.e("","d1 is after d2"); 
} 
else if(d1.compareTo(d2)<0){ 
Log.e("","d1 is before d2"); 
} 
else 
{ 
Log.e("","both dates are same"); 
} 

這就是它的消息:)

相關問題