今天在跑Google针对tv开发出点框架 Leanback的时候,遇到一个问题,就是桌面上没有该appicon.刚开始以为安装不成功。后来发现是。桌面上没有该app的icon.这个问题以前也没有遇到过,仔细看了下。xml文件里面有icon。也有logo就是桌面没有显示这个。后来又猜测是不是没有label。加上去还是不显示。。最后在xml里面看到这么一段:
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="true" />
百度下其作用:
解释如下:
touchscreen为false,即TV app 不需要触摸
android.software.leanback:仅仅在TV上运行设置为true,在TV和phone上运行设置为false
所以在就把这三个值都修改为false.运行发现还是没显示,后又发现启动页是这么写的:
<activity
android:name=".ui.MainActivity"
android:icon="@drawable/videos_by_google_banner"
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:screenOrientation="landscape"
android:theme="@style/Theme.Leanback.Browse">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
和我们普通的写法不一样。我们普通的写法应该是:
<activity
android:name=".ui.MainActivity"
android:icon="@drawable/videos_by_google_banner"
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:screenOrientation="landscape"
android:theme="@style/Theme.Leanback.Browse">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
可以看到
<category android:name="android.intent.category.LAUNCHER" />
这个不同。查了下:原来:
运行在电视设备端的Activity需要声明CATEGORY_LEANBACK_LAUNCHER 意图过滤器声明,这样可以保证
Google Play能够认定我们的app为电视版,同时,当我们在电视上选择我们的应用图标时,就会进入到
我们声明CATEGORY_LEANBACK_LAUNCHER的Activity与Android手机一致。
因为我是在模拟器上跑的。不是真正意义上的机顶盒。故lancher这个应用显示不出来。我们只需要修改成:
<activity
android:name=".ui.MainActivity"
android:icon="@drawable/videos_by_google_banner"
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:screenOrientation="landscape"
android:theme="@style/Theme.Leanback.Browse">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
即可。运行。还是没显示。觉得很奇怪。最后想下会不会是因为我们没有删除之前的app。故在Lancher桌面程序读的还是我们第一次安装时候的。删掉重新安装。。再次运行。桌面有了图标。
至此问题解决了:
完整的xml:
扫描二维码关注公众号,回复:
2759320 查看本文章
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<application
android:allowBackup="false"
android:banner="@drawable/videos_by_google_banner"
android:icon="@drawable/app_icon_quantum"
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:theme="@style/Theme.Leanback">
<activity
android:name=".ui.MainActivity"
android:icon="@drawable/videos_by_google_banner"
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:screenOrientation="landscape"
android:theme="@style/Theme.Leanback.Browse">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
哎。。心好累。。不想做tv开发。。。因为没做过。所以心里没底,也不知道遇到问题该请教谁。。心里好慌。。加油吧。。
每日语录:
深山的鹿,不知归处。
万般皆苦,只可自渡。。。
单曲循环《凤凰花开的路口》
加油!!!!
万般皆苦,只可自渡。。。
单曲循环《凤凰花开的路口》
加油!!!!