【问题标题】:query the latest SMS messages group by contact按联系人查询最新短信群
【发布时间】:2012-03-22 15:36:42
【问题描述】:

与 Message 应用一样,第一个 Activity 显示按人员和计数分组的最新 SMS。

例如,我与 Chris 交换了 50 个文本,与 Aline 交换了 60 个文本,与 Ray 交换了 40 个文本...... 该应用显示类似这样的内容

Chris (50) Hey how are you lately ?    
Aline (60) Let's catch up     
Ray   (40) Here is my number
Ethan (1)  I wrote a solution

我正在尝试做同样的事情。我查询所有短信,然后对它们进行排序。 至少它是 O(n) 高效的。

Cursor cur = this.getContentResolver().query(Uri.parse("content://sms"), null, null, null, null);
int count = cur.getCount();

// iterate all the SMS
for (int i=1 ; i<=count ; i++){
    // processing
    ....

    cur.moveToNext();
}

有没有办法查询按人分组的最新消息(接收或发送非草稿类型)并从一个人那里获取短信数量? 我想有多个查询。

【问题讨论】:

    标签: android sql android-contentprovider


    【解决方案1】:

    我认为这会做你想要的:

    Cursor cur = this.getContentResolver().query(Uri.parse( "content://mms-sms/conversations?simple=true"), null, null, null, "normalized_date desc" );
    

    返回的光标将包含每个会话中的最新消息以及每个会话中的消息量。

    【讨论】:

    • 有效!!消息数是“message_count”列。不要忘记“android.permission.READ_SMS”。你从哪里得到这个简单的代码 sn-p ?
    • 我记得在自己解析短信时遇到了完全相同的问题。做了一个快速的谷歌搜索,实际上找到了一些来源。很高兴它成功了。
    • 好的,感谢您的帮助。我没有用谷歌搜索关键字“对话”:)
    • 我注意到这些是您的查询返回的列: (_id, date, message_count, recipient_ids, sn-p, sn-p_cs, read, type, error, has_attachment) 。哪一列对应于 Contacts Content Provider 中的contact_id?或者这不可能通过添加查询字符串 "?simple=true" 吗?
    • 嘿@gelupa,您如何从您在查询中使用的Uri 获取thread_id?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多