【问题标题】:How do I sort SMS and MMS together?如何将 SMS 和 MMS 排序在一起?
【发布时间】:2012-06-09 21:17:26
【问题描述】:

我正在实现这里讨论的方法:How to Read MMS Data in Android?

我正在尝试将 SMS 和 MMS 读取到单个列表视图中。我做得很好,但是当我尝试排序时,我将所有 SMS 排序在一起,然后将所有 MMS 排序在一起。

这是我的代码:

Cursor smsCursor = getContentResolver().query(Uri.parse("content://mms-sms/conversations/"), null, null, null, "date DESC");

谁能告诉我如何结合这两个来源或如何将彩信结合到短信对话中,就像内置的 Android 应用一样?

编辑:我注意到短信的日期比彩信的日期多几个数字。

编辑 2:像这样添加“julianday()”:

Cursor smsCursor = getContentResolver().query(Uri.parse("content://mms-sms/conversations/"), null, null, null, "julianday(date) DESC");

使彩信显示在列表顶部。

【问题讨论】:

    标签: android sms mms


    【解决方案1】:

    请尝试使用normalized_date desc 而不是date desc 来订购。

    它应该可以工作。

    【讨论】:

    • 这似乎在装有 Android 4.3 的 Galaxy Note 2 上崩溃。错误是 Caused by: android.database.sqlite.SQLiteException: no such column: normalized_date (code 1): , while compiling: SELECT * FROM threads ORDER BY normalized_date desc 。如何确定 normalized_date 列是否不存在?我已经在其他版本的 android 上测试过这个没有问题。
    • 我无法测试它。所以我只是猜测。也许你不需要这个专栏。我认为,原始列日期已经在两个表中进行了规范化。因此,您需要使用异常处理程序来检查查询是否有此列。但我只是猜测!
    • @toobsco42 这个异常的类别是什么?
    【解决方案2】:

    这里真正的问题似乎是在数据库中,日期的存储方式与 SMS 和 MMS 的存储方式不同。

    因此,您需要首先查询数据库以查找“日期”字段。 (非 normalized_date 会在某些设备上崩溃)。

    然后在 Java 中以编程方式对您的列表进行排序,考虑到 MMS, 日期需要乘以 1000,如此处所述: How do the retrieve the date of the mms from content://mms.* 或者在这里 mms sent/recive date is always in 1970

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多