如何查询mmssms.db线程表

时间:2016-03-01 02:24:50

标签: android android-sqlite

我正在尝试查询mmssms.db中的threads表,但是,在运行查询时出现此异常:

android.database.sqlite.SQLiteException: no such column: recipient_ids (code 1)

这是我正在运行的查询。

Uri uri = Telephony.Threads.CONTENT_URI;
    String[] prj = new String[]{"_id", Telephony.ThreadsColumns.RECIPIENT_IDS};
    Cursor cur = getApplicationContext().getContentResolver().query(uri, prj, "_id=?", new String[]{"10"}, null);
    if (cur != null) {
        System.out.println(DatabaseUtils.dumpCursorToString(cur));
        cur.close();
    }

这个异常让我觉得我以某种方式让线程表的Uri错了。知道在mmssms.db中查询线程表的正确方法是什么?

我可以通过将数据库下载到我的计算机并在数据库浏览器中打开来验证mmssms.db中是否存在线程表。

1 个答案:

答案 0 :(得分:0)

原来是Uri。这是工作代码:

Uri uri = Uri.parse("content://mms-sms/conversations?simple=true");
        final String[] prj = new String[]{"_id", "recipient_ids"};
        Cursor cur = ctx.getContentResolver().query(uri, prj, "_id=?", new String[]{thread_id}, null);
        if (cur != null) {
            System.out.println(DatabaseUtils.dumpCursorToString(cur));
            cur.close();
        }

这里的关键区别是:content://mms-sms/conversations?simple=true