Tv开发中Actionbar焦点问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w815878564/article/details/54004312

最近一直在做系统的二次打包,主要就是把编译好的系统包重新加入一些apk、配置文件、可执行文件、脚本等,然后重新打包。在这个过程中遇到了很多问题,这里就先记录一个。
上周因为修复了一些bug,于是提交了一版测试。测试反馈的bug中有一个很神奇——系统的图库应用没办法用遥控器操作了,但是鼠标还是可以操控。我们这里用的图库就是Android系统中的Galley2应用。
一开始我百思不得其解,因为我上一版测试图库应用是可以用遥控器操作的,这个突然不能用遥控器了,让我感觉很疑惑,因为修复的那几个bug根本不可能影响到这个焦点。既然提了bug那还是得去排查,这里我陷入了一个误区,因为我直接就去查看Galley2源码了,其实最快的办法应该是首先对比两版测试到底有哪些差异,如果排除了这些差异的影响,最后才是查看分析源码。
我分析了半天,最后发现其实控件还是可以获取焦点的,只是需要强制获取一次焦点,不过这样还是有一个问题,ActionBar上面的控件完全没有办法获取焦点,无论怎么强制赋予焦点都没有任何作用。于是我开始各种搜索关于ActionBar焦点的问题,可惜最后没有一个有效的办法。
我甚至还怀疑过是应用主题设置的问题,因为系统是6.0的,但是这个Gallery还是用的Holo的主题,可惜改来改去还是不行。
最后没有办法了,我回到了一开始我提到的那个办法,排除两版系统的差异。我首先选择的是查看第二版测试中新增的东西,这里改变最大的就是增加了GMS。于是打开GMS目录,发现里面有一个etc的文件夹,看到这个文件夹我仿佛看到了希望的曙光。因为Android系统的很多配置文件都在/system/etc/目录下面,接着我打开etc目录,发现里面有一个permmissions文件夹,最里面是一个features.xml文件。
打开features.xml文件我发现了一个很熟悉的标签:feature。然后百度了一下/system/etc添加feature标签的意思就是表示系统支持哪些特性,比如相机、蓝牙、NFC之类的。仔细检查features.xml文件里面的每一个标签,我又发现了一个很奇怪的属性:touchscreen(你说我一个好好的机顶盒怎么跑来支持触屏了呢?我根本没有屏幕的好么?),果断将该属性注释掉,替换系统中的features.xml文件,重启之后,图库应用又能正常使用啦。
当然最后,你要问我为什么触屏设备不支持遥控器操作ActionBar,这个我真不太明白。我这篇文章主要收获就是:
第一再遇到这种因为版本差异出现的bug,我们应该先排查是哪个差异带来的bug,而不是一开始就去找某个应用的源码
第二关于/system/etc文件夹内容的,这个里面有很多配置文件,我们在改动或者新增文件的时候,一定要明白这些改动会带来什么样的影响

猜你喜欢

转载自blog.csdn.net/w815878564/article/details/54004312
今日推荐