在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
有人经历过吗?或者,任何人都可以看到其他明显的缺失/不正确的东西吗?
答案 0 :(得分:2)
最后我找到了答案!
如果您想支持AndroidTV,则无法在清单中锁定方向。
android:screenOrientation="landscape"
android:screenOrientation="portrait"
相反,您可以在Activity的onCreate内使用以下代码(或类似内容)
requestedOrientation =
if (isPhoneDevice()) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
else ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
如果清单中没有锁定方向逻辑,则可能有一些lib添加了它。使用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权限。