如何获得最近14天的Android短信

我正在尝试阅读最近14天的机器人短信,但它似乎需要一个永恒的时间来读出光标中的所有消息,所以我将它限制在第一个100,似乎没有按时间顺序排列。

有效查询esms数据以获取联系人和消息的任何想法?

我的代码:

Uri uriSMSURISent = Uri.parse("content://sms/sent"); // get the sms data for sent Cursor curSent = getContentResolver().query(uriSMSURISent, null, null, null,null); int i=0; while (curSent.moveToNext() && i<100) { String from = curSent.getString(2); if(sentHashmap.containsKey(to)) { String cumulativeMessage = sentHashmap.get(to); sentHashmap.put(from, cumulativeMessage+ " " +curSent.getString(12)); } else sentHashmap.put(from, curSent.getString(12)); i++ 

我建议您使用ContentResolver查询来仅获取您感兴趣的记录。 你可以选择不同的列,指定where子句甚至排序..

http://developer.android.com/guide/topics/providers/content-provider-basics.html

 // Queries the user dictionary and returns results mCursor = getContentResolver().query( UserDictionary.Words.CONTENT_URI, // The content URI of the words table mProjection, // The columns to return for each row mSelectionClause // Selection criteria mSelectionArgs, // Selection criteria mSortOrder); // The sort order for the returned rows Table 2 shows how the arguments to query(Uri,projection,selection,selectionArgs,sortOrder) match an SQL SELECT statement: // column names for above provider: 0: _id 1: thread_id 2: address 3: person 4: date 5: protocol 6: read 7: status 8: type 9: reply_path_present 10: subject 11: body 12: service_center 13: locked 

现在你只需要用一个好的where子句来查询它:

  long date = new Date(System.currentTimeMillis() - 14L * 24 * 3600 * 1000).getTime(); Cursor curSent = getContentResolver().query(uriSMSURISent, null,"date" + ">?",new String[]{""+date},"date DESC");