根据setupwizard APK那边反映StatusBarManager.disbale(StatusBarManager.DISABLE_MASK ^ StatusBarManager.DISABLE_BACK),这里说明了这个APK运行的时候已经去除了各个虚拟按键的相应。问题便来了,这里肯定是
framework这边出了问题。我们修改不了APK,这里动手修改framework了。
哪里出了问题从哪里看起,首先从StatusBarManager这个类里的disable方法看起。
在disable方法里我们添加
int flag = StatusBarManager.DISABLE_MASK ^ StatusBarManager.DISABLE_BACK;
if (mContext.getPackageName().equals("com.asus.setupwizard")){
if (what == flag){
Settings.System.putInt(mContext.getContentResolver(),"DISABLE_RECENT",1);
}else {
Settings.System.putInt(mContext.getContentResolver(),"DISABLE_RECENT",0);
}
}
主角到phonewindowManager这里了,我在万能的方法里interceptKeyBeforeDispatching里读取
int flag = Settings.System.getInt(mContext.getContentResolver(),"DISABLE_RECENT",0);
然后对flag进行判断,问题便得到解决。
if (virtualKey || keyguardOn || flag == 1) {
// Let the app handle the key
return 0;
}