如何将HOME键传给APP,屏蔽系统的home键功能
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
如何将HOME键传给APP,屏蔽系统的home键功能
[SOLUTION]
KK版本APP可以使用
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED);
L版本因为flag的位数已被系统用完,故没有FLAG_HOMEKEY_DISPATCHED
这个feature,
现在只有通过硬编码才能解决这个问题。
修改PhoneWindowManager.java中的
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int
policyFlags) {
......
// timeout.
if (keyCode == KeyEvent.KEYCODE_HOME) {
//com.example.ADC 替换为贵司的apk 包名称即可。
if(win != null && win.getAttrs() !=
null&&win.getOwningPackage().equals("com.example.adc")){
return 0;// return 0就会丢给app处理了。
}
如果要仅仅丢给某个APP的某个activity,可以用下面的方法:
if(win != null && win.getAttrs() !=
null&&winstate.getAttrs().getTitle().contain("xxx.xxx.xxx.xxxActivity")){
return 0;// return 0就会丢给 xxx.xxx.xxx.xxxActivity处理了。
}
如何将HOME键传给APP,屏蔽系统的home键功能
[SOLUTION]
KK版本APP可以使用
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED);
L版本因为flag的位数已被系统用完,故没有FLAG_HOMEKEY_DISPATCHED
这个feature,
现在只有通过硬编码才能解决这个问题。
修改PhoneWindowManager.java中的
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int
policyFlags) {
......
// timeout.
if (keyCode == KeyEvent.KEYCODE_HOME) {
//com.example.ADC 替换为贵司的apk 包名称即可。
if(win != null && win.getAttrs() !=
null&&win.getOwningPackage().equals("com.example.adc")){
return 0;// return 0就会丢给app处理了。
}
如果要仅仅丢给某个APP的某个activity,可以用下面的方法:
if(win != null && win.getAttrs() !=
null&&winstate.getAttrs().getTitle().contain("xxx.xxx.xxx.xxxActivity")){
return 0;// return 0就会丢给 xxx.xxx.xxx.xxxActivity处理了。
}
