gpt4 book ai didi

java - 如何获取过去 14 天的 Android 短信

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:09 24 4
gpt4 key购买 nike

我正在尝试阅读过去 14 天的 android 短信,但是从 Cursor 中读出所有消息似乎需要很长时间,所以我将其限制为第 100 条,这似乎不是按时间顺序排列的。

是否有任何有效查询这些数据以仅提取联系人和消息的想法?

我的代码:

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");

关于java - 如何获取过去 14 天的 Android 短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com