【问题标题】:Returning MatrixCursor in ContentProvider query method makes Android TV global search crash在 ContentProvider 查询方法中返回 MatrixCursor 使 Android TV 全局搜索崩溃
【发布时间】:2015-07-25 21:01:28
【问题描述】:

我正在尝试使我的 Android TV 应用可搜索,并且我正在测试全局搜索。我创建了一个 ContentProvider,当我搜索某些内容时会调用它的查询方法。当我填充一个游标并返回它时,问题就出现了,在那一刻,全局搜索崩溃了,而 LogCat 对此一无所知。我在本节中的代码是这样的:

MatrixCursor matrixCursor = new MatrixCursor(new String[]{
        "_id",
        SearchManager.SUGGEST_COLUMN_TEXT_1,
        SearchManager.SUGGEST_COLUMN_CONTENT_TYPE,
        SearchManager.SUGGEST_COLUMN_PRODUCTION_YEAR,
        SearchManager.SUGGEST_COLUMN_INTENT_ACTION,
        SearchManager.SUGGEST_COLUMN_INTENT_DATA,
        SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID
});

matrixCursor.addRow(new Object[]{
        1,
        "movie 1",
        "video/mp4",
        2014,
        Intent.ACTION_SEARCH,
        "content://myauthority/videos/",
        1
});

matrixCursor.addRow(new Object[]{
        2,
        "video 2",
        "video/mp4",
        2013,
        Intent.ACTION_SEARCH,
        "content://myauthority/videos/",
        2
});

matrixCursor.addRow(new Object[]{
        2,
        "video 3",
        "video/mp4",
        2012,
        Intent.ACTION_SEARCH,
        "content://myauthority/videos/",
        3
});

return matrixCursor;

我只是想返回一个测试光标来看看全局搜索是如何工作的,但我一定是做错了什么。

【问题讨论】:

  • 我建议使用BaseColumns._ID 而不是字符串_id
  • 如果崩溃了,那么回溯是什么?
  • BaseColumns._ID 更正确,但这不是问题所在。 LogCat 中没有异常跟踪,所以我不知道我遇到了什么样的错误。
  • 那么它怎么会在没有回溯的情况下崩溃呢?你怎么知道它崩溃了?
  • 嗯,我认为它崩溃了,因为没有显示其他应用程序全局搜索的任何结果,而是系统返回到 Leanback 启动器。

标签: android television android-tv


【解决方案1】:

我发现了问题。我以为只有SearchManager.SUGGEST_COLUMN_TEXT_1SearchManager.SUGGEST_COLUMN_CONTENT_TYPESearchManager.SUGGEST_COLUMN_PRODUCTION_YEAR 字段是必需的(这就是Android 开发者电视指南所说的),但SearchManager.SUGGEST_COLUMN_RESULT_CARD_IMAGE 也是必需的。如果没有卡片图像,全局搜索会崩溃,可能是因为尝试设置空位图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2019-10-11
    • 1970-01-01
    • 2023-03-28
    • 2012-05-17
    • 1970-01-01
    • 2018-11-11
    • 2021-12-20
    相关资源
    最近更新 更多