android - 如何使 Android TV 可以搜索应用内容

标签 android search android-tv

所以我按照 android tv 文档从这里下载了示例应用程序:

https://github.com/googlesamples/androidtv-Leanback

我让它在实际的 Nexus 设备上运行,大部分应用程序都运行良好。不过,我最感兴趣的部分对我不起作用。

当我尝试在主屏幕上使用 google 搜索进行搜索时,我根本没有从 leanback 示例应用程序中获得任何搜索结果,并且我在来自示例应用程序的 logcat 中看到以下错误。

1822-1838/com.example.android.leanback E/JavaBinder﹕ *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
        at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
        at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
        at android.database.AbstractWindowedCursor.getType(AbstractWindowedCursor.java:130)
        at com.example.android.leanback.PaginatedCursor.<init>(PaginatedCursor.java:65)
        at com.example.android.leanback.VideoDatabase.query(VideoDatabase.java:170)
        at com.example.android.leanback.VideoDatabase.getWordMatch(VideoDatabase.java:150)
        at com.example.android.leanback.VideoContentProvider.getSuggestions(VideoContentProvider.java:112)
        at com.example.android.leanback.VideoContentProvider.query(VideoContentProvider.java:85)
        at android.content.ContentProvider.query(ContentProvider.java:950)
        at android.content.ContentProvider$Transport.query(ContentProvider.java:210)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
        at android.os.Binder.execTransact(Binder.java:446)

我在我自己的应用程序中遵循了这个示例,我得到了类似的错误以及其他错误,因为我确定我没有以正确的方式连接所有东西。如果有人在可搜索的应用程序内容中获得了一些意见,我将不胜感激,以使其正常工作。

编辑:

在进行一些调试后,我可以看到放入 paginatedCursor 的光标始终为空。它可能与查询的格式化方式有关。我现在正在构建查询,如果我能正常工作,我会发回。

最佳答案

Android TV 搜索使用标准的 Android 搜索机制来搜索第三方应用。您可以找到有关 Android 搜索机制的 API 指南 here .

您还可以查看名为“Searchable Dictionary”的遗留示例应用程序,其中演示了搜索机制。它可以在 Android SDK 示例应用程序中找到。在 SearchManager 类中定义了很多以“SUGGEST_COLUMN_”为前缀的列名称,代表您的应用程序可以提供哪些数据字段,例如 here .

在 Android Lollipop 版本中,引入了一些专为 Android TV 搜索设计的新列。您可以找到新添加的列 here.

一些重要的列是:

SUGGEST_COLUMN_TEXT_1 SUGGEST_COLUMN_TEXT_2 SUGGEST_COLUMN_RESULT_CARD_IMAGE SUGGEST_COLUMN_CONTENT_TYPE 建议_列_视频_宽度 SUGGEST_COLUMN_VIDEO_HEIGHT SUGGEST_COLUMN_PRODUCTION_YEAR SUGGEST_COLUMN_DURATION

关于android - 如何使 Android TV 可以搜索应用内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29263456/

相关文章:

java - 在 Sqlite 中仅创建和更新单个值

git - 如何在 GIT 中按名称搜索标签?

javascript - 用于数组搜索的正则表达式通配符

android - 我应该使用哪个资源限定符来支持 1080p、720p 安卓电视? - 安卓

android - 谷歌地图在长时间打开时在 Android TV 中闪烁

android - 如何在不使用 "setImageBitmap()"的情况下加载带有 png 文件的 ImageView?

android - 检查 fragment 是否在服务中可见

android - 如何在 Android 中一一显示来自数据库的字符串响应?

php - 我的搜索脚本出错

java - 如果应用程序使用网络浏览器链接,如何通过 Android TV 的 Google Play 商店资格?