android - 如何在自己的应用程序中使用 3rd 方 TvProvider 对象?
问题描述
这里我们有一个示例应用程序,它为 Android TV 注册了一个频道,因此这些频道是由操作系统在主屏幕上提供的。
假设像 Netflix、Prime 等内容提供商为每个人提供一个频道,我如何在我的应用中显示这些频道?
解决方案
这些TvProvider
s 只能由 Android 系统访问。创建频道时,您需要在系统中为该频道注册一个提供者——这就是TvProvider
s 的本质。您几乎无法以正确的方式在您自己的应用程序中显示您的频道——leanback库没有提供默认的频道 UI——因此您必须自己为它创建一个 UI 或在leanback 组件中进行修改。
您只能使用您创建的频道。您可以创建、更新和管理对它们的访问 - 仅此而已。您在频道创建时提供的所有 UI 内容和内容使用都处理 Android TV 系统。
在您的应用程序中无法访问其他供应商TvProvider
和渠道,我想永远不会有。
这是查询 TvProvider 中所有可用频道的方法
private val CHANNELS_MAP_PROJECTION = arrayOf(
TvContractCompat.Channels._ID,
TvContractCompat.Channels.COLUMN_INTERNAL_PROVIDER_ID,
TvContractCompat.Channels.COLUMN_BROWSABLE
)
context.contentResolver.query(
TvContractCompat.Channels.CONTENT_URI,CHANNELS_MAP_PROJECTION,
null, null, null
)
这是一个来自 googlecodelabs 如何正确使用 TvProvider 调用的简洁示例。
这是来自同一应用程序的一个示例,说明如何将您的频道添加到 TvProvider。
以下是 Android 电视如何与电视提供商合作的完整流程以及一般限制和可能性描述
因此,您根本无法做到。只有具有signature
/ signatureOrSystem
protectionLevel 的应用程序才能使用它。唯一使用这种保护级别的应用程序是应用程序供应商使用与 AOSP 本身相同的密钥签名和/或将它们放置在特殊文件夹中 - 只有设备供应商可以这样做(或者您,但只能在有根设备上)。对于一般的消费者应用程序来说,你想要的东西是不可能的。
推荐阅读
- html - 如何在 CSS 中使用 ::before 和 ::after 将形状(变换)相互叠加?边缘不会在背景上显示形状
- javascript - 如何使用 D3 和 javascript 从 csv 创建交互式可折叠树图?
- python - 在 Windows 上通过 Apache Lounge 部署烧瓶应用程序时出现内部服务器错误
- excel - 从另一个单元格复制数据(如果语句,也许?)
- typescript - 检查 null / undefined 的打字稿函数
- python - 什么样的过滤器适合在 OpenCV 中检测土壤上的裂缝?
- c# - 当 WebBrowser 完成文件下载时进行事件
- python - Pipenv 安装:没有名为“...”的模块
- spring - Spring Data Elasticsearch Repository 查询定义日期输入参数格式
- selenium - 单击右键菜单