【发布时间】:2021-03-14 10:15:42
【问题描述】:
Here we have a sample app,为Android TV注册频道,操作系统so these channels are provided on the home screen。
假设 Netflix、Prime 等内容提供商为每个人提供一个频道,我如何在我的应用中显示这些频道?
【问题讨论】:
标签: android android-tv
Here we have a sample app,为Android TV注册频道,操作系统so these channels are provided on the home screen。
假设 Netflix、Prime 等内容提供商为每个人提供一个频道,我如何在我的应用中显示这些频道?
【问题讨论】:
标签: android android-tv
那些TvProviders 只能由 Android 系统访问。创建频道时,您需要在系统中为该频道注册一个提供者——这就是TvProviders 的本质。您几乎无法在自己的应用程序中以正确的方式显示您的频道 - leanback 库没有提供默认的频道 UI - 因此您必须自己创建一个 UI 或在leanback 组件中进行修改。
您只能使用您创建的频道。您可以创建、更新和管理对它们的访问 - 仅此而已。您在频道创建时提供的所有 UI 内容和内容使用都处理 Android TV 系统。
在您的应用程序中无法访问其他供应商TvProviders 和渠道,我想永远不会有。
这里是查询 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
)
Here 是来自 googlecodelabs 如何正确使用 TvProvider 调用的简洁示例。
Here 是来自同一应用程序的示例,说明如何将您的频道添加到 TvProvider。
Here 是 Android 电视如何与电视提供商和一般limitations 和可能性描述一起工作的整个流程
因此,您根本无法做到。只有具有signature /signatureOrSystem protectionLevel 的应用才能使用它。唯一使用这种保护级别的应用程序是应用程序供应商使用与 AOSP 本身相同的密钥签名和/或将它们放置在特殊文件夹中 - 只有设备供应商可以这样做(或者您,但只能在有根设备上)。你想要的对于一般消费者应用来说是不可能的。
【讨论】: