谷歌播放警告缺少leanback意图

Posted

技术标签:

【中文标题】谷歌播放警告缺少leanback意图【英文标题】:Google Play warning about missing leanback intent 【发布时间】:2019-01-26 12:46:46 【问题描述】:

在 Google Play 上更新我们的应用时,我得到了

You opted-in to android TV but your APK or Android App Bundle does not have the Leanback intent

这有点奇怪,因为我们的清单中有所有必需的组件来支持电视,即:

<uses-feature
    android:name="android.software.leanback"
    android:required="false" />
<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation"
        android:launchMode="singleTop"
        android:screenOrientation="behind"
        android:theme="@style/AppTheme.Splash">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>

<application
    android:banner="@drawable/tv_banner"

(请注意,我们在电视和移动设备之间共享活动)

我们还包括以下 gradle 模块:

implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:leanback-v17:27.1.1'

该应用也适用于电视设备:)

现在,诚然,我们已经进行了一次重大重构,因此我们的应用程序和清单的结构发生了很大变化。但是,我没有看到任何与 Android 开发文档中的要求相矛盾的内容:

https://developer.android.com/training/tv/start/start

有人经历过吗?或者,任何人都可以看到其他明显缺失/不正确的内容吗?

【问题讨论】:

您的 Launcher 活动必须在该活动的 中有 请见上文。我已经在这样做了。这包含在我的原始帖子中。 不应该将android:name="android.software.leanback"设置为“true”吗? 【参考方案1】:

我终于找到了答案!

如果你想支持 AndroidTV,你不能在 manifest 中锁定方向。

android:screenOrientation="landscape"
android:screenOrientation="portrait"

相反,您可以在 Activity 的 onCreate 中使用以下代码(或类似代码)

requestedOrientation =
        if (isPhoneDevice()) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
        else ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE

如果您的清单中没有锁定方向逻辑,则可能某些库会添加它。使用 apk 工具反编译您的 apk,然后验证生成的清单。您可以将其替换为以下代码:

<activity
            android:name="com.yoursite.SampleActivity"
            tools:replace="android:screenOrientation"
            tools:node="merge"
            android:screenOrientation="sensor"/>

我希望它会有所帮助:)

编辑: 我发现了另一个问题。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

您不能在 Android TV 上使用 ACCESS_WIFI_STATE 权限。

【讨论】:

感谢您的回复。我尝试删除 ACCESS_WIFI_STATE 并没有运气。我还检查了方向(在反编译的 apk 中)以及我们唯一一次设置我们使用android:screenOrientation="behind" 的属性(尽管在很多活动中)。我们的应用肯定会出现在电视上,只是不知道为什么会有这样的消息。 尝试将您在 google play 中的清单与新清单进行比较。也许至少有一个权限或硬件不受 Android TV 支持。您可以在此处找到被禁止的功能列表:developer.android.com/training/tv/start/hardware,但请记住,这并不是全部。删除 wifi 权限并锁定屏幕方向后,我的应用已成功更新(也适用于 android 电视)。

以上是关于谷歌播放警告缺少leanback意图的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用意图播放本地视频

谷歌播放控制台警告

在 Leanback 应用程序中自定义播放控件

我们可以为 Android 移动应用程序使用 Leanback 库(视频播放器小部件)吗?

谷歌浏览器 如何关掉网页自动播放视频

Android TV 从 URL 播放视频