gpt4 book ai didi

Android MMS 数据库,从神秘列中按日期选择行

转载 作者:行者123 更新时间:2023-11-30 02:19:01 25 4
gpt4 key购买 nike

我正在访问 Android MMS 数据库以获取 MMS 消息的日期:

Uri mmsUri = Uri.parse("content://mms/");
ContentResolver contentResolver = getContentResolver();
String[] projection = {"_id", "date"};
Cursor cursor = contentResolver.query(mmsUri, projection, null, null, null);

long dateVal = cursor.getLong(cursor.getColumnIndex("date"));
//This date is always 1970
Date mmsDate = new Date(dateVal);

但我得到的日期始终是 1970。然后,我找到了一个 answer为了这。我需要将 projection 设置为 null(以返回所有列),然后使用以下代码获取日期值:

//A mystery column of index 2
long timestamp = cursor.getLong(2) * 1000;
//It works !
Date mmsDate = new Date(timestamp);

到这里为止一切都很好。但是,现在我不需要从 MMS 数据库中获取所有行,而是需要选择在特定日期之后发送的那些行,这意味着我需要使用选择和选择参数。像这样的东西:

String selection = NAME_OF_MYSTERY_COLUMN_IDX_2 > minDate
Cursor cursor = contentResolver.query(mmsUri, projection, selection, null, null);

但我不知道索引为 2 的列的名称是什么,我怎样才能实现我所需要的?有解决方法吗?

最佳答案

您的第一个代码块是正确的,除了 Date 实例化。该构造函数期望时间以毫秒为单位,但 MMS 表以秒为单位保存日期。要更正此问题,只需将查询返回的值乘以 1000。

Date mmsDate = new Date(dateVal * 1000);

为了将来引用,Cursor#getColumnName() 方法将为您提供给定列索引的字符串名称。

关于Android MMS 数据库,从神秘列中按日期选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28875597/

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