ICS 4.0.3 当把系统切换到tablet模式后,发现插入数据线,并不会弹出"usb已连接" 的提示,试了很多次都是一样,但当切换到 phone模式时,就可以正常显示,几经周折,看了两个多小时代码,终于把原因找到:
琢磨代码后发现,其实不仅是usb的问题,蓝牙连通时,闹钟响起后都一样不会在状态栏上显示状态。
这个是android自身bug,在tablet模式下,systemUI.apk里并没有注册对这些事件的监听,而这些事件的监听,android其实已经在phone模式下实现了,具体代码在
PhoneStatusBarPolicy 的构造函数内。所以只要我们实倒化一下PhoneStatusBarPolicy 就可以解决这个问题了
修正办法如下:
修改frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\tablet\TabletStatusBar.java
在头部引入
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
然后改start()方法成如下
@Override
public void start() {
super.start(); // will add the main bar view
PhoneStatusBarPolicy mIconPolicy = new PhoneStatusBarPolicy(mContext);//这行是新增加的
}
重新编译,再push 进入,重启后就OK了