android - 如何从内容 ://mms. 中检索彩信的日期

标签 android date textview android-sqlite android-mms

我确实得到了关于如何检索从这个链接发送的彩信的文本和图像的信息:How to Read MMS Data in Android? .

但我不确定如何检索发送的彩信的日期。

我知道我必须查看 content://mms 而不是 content://mms/part。

这是获取彩信文本的方法:

private String getMmsText(String id) {
        Uri partURI = Uri.parse("content://mms/part/" + id);
        InputStream is = null;
        StringBuilder sb = new StringBuilder();
        try {
            is = getContentResolver().openInputStream(partURI);
            if (is != null) {
                InputStreamReader isr = new InputStreamReader(is, "UTF-8");
                BufferedReader reader = new BufferedReader(isr);
                String temp = reader.readLine();
                while (temp != null) {
                    sb.append(temp);
                    temp = reader.readLine();
                }
            }
        } catch (IOException e) {
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
        return sb.toString();
    }

然后,在 onCreate 方法中,我使用此代码获取信息:

Cursor cursor = getContentResolver().query(uri, null, selectionPart,
                null, null);
        if (cursor.moveToFirst()) {
            do {
                String partId = cursor.getString(cursor.getColumnIndex("_id"));
                String type = cursor.getString(cursor.getColumnIndex("ct"));
                if ("text/plain".equals(type)) {
                    String data = cursor.getString(cursor
                            .getColumnIndex("_data"));

                    if (data != null) {
                        // implementation of this method above
                        body = getMmsText(partId);
                    } else {
                        body = cursor.getString(cursor.getColumnIndex("text"));
                    }
                }
            } while (cursor.moveToNext());
        }

        try {


            main.setText(body);
            img.setImageBitmap(bitmap);
        } catch (Exception e) {

            e.printStackTrace();
        }

我只是想知道在哪里可以更改以获取日期值。

有些信息会很有帮助。

最佳答案

我对 MMS 不是很熟悉,但我想像这样的东西至少能让你入门

Cursor cursor = activity.getContentResolver().query(Uri.parse("content://mms"),null,null,null,date DESC);
count = cursor.getCount();
if (count > 0) 
{
    cursor.moveToFirst();
    long timestamp = cursor.getLong(2);
    Date date = new Date(timestamp);
    String subject = cursor.getString(3);
}

当然,它完全未经测试,但应该能为您指明正确的方向。希望这对您有所帮助!

编辑 在做了一些阅读之后,在检索数据时,曾经(可能仍然是)一个带有 MMS 消息时间戳的“错误”。如果你最终得到一个愚蠢的值(比如纪元),你必须在使用它之前 * 1000。顺便说一句 :) 即:

long timestamp = (cursor.getLong(2) * 1000);

关于android - 如何从内容 ://mms. 中检索彩信的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460486/

相关文章:

android - 没有简单的方法在新屏幕中显示 PreferenceFragment?

python - 在工作日范围内扩展索引

android - gridview元素的重复......!

android - TextView 到 Bitmap,对齐问题

android - 我可以为仅由 TalkBack 宣布的 TextView 提供额外的标签,而不是在视觉上显示吗?

android - 从 Android 中的多个蓝牙设备读取?

android - 通过 GCM 向 Android/IOS 推送静默通知

android - 我要使用什么 CursorAdapter?

java - 将 Sax 解析器数据作为 Hashmap 存储在数组列表中

javascript - 使用 moment 抓取不同时区的日期的部分内容