有些时候,需要在应用里截获 HOME 按键,比如产线上的按键测试软件。
目前网上有一种解决方法如下:
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);
然后,再重写按键相关的事件即可。是不是很简单?
不过,如果你仔细看源码的话,会发现 WindowManager.java 中不一定有 FLAG_HOMEKEY_DISPATCHED 这个常量。
这究竟是怎么回事呢。
我初次在网上看到这个修改方式时,没太在意,但后来发现到处在引用,就不得不说说了。
FLAG_HOMEKEY_DISPATCHED 这个常量最初是我在做某个项目的时候,为了测试 HOME 键添加的。
首先要做的就是修改 Framework 层的代码,然后应用层再通过上述方式通知 FW 层我要使用 HOME 键。
不知道哪位大神将应用上的修改放到网上,可是不知道背后是需要 Framework 的修改做支撑的。
好了,到这里大家应该清楚了,这个方法如果有效,需要在这个特定项目或后续项目的代码下才可以。
否则,还是老老实实地去在修改源码上找方法吧。
如果您是做第三方应用的,那么好吧,在现在的版本上,只在应用上解决已经不可能了。
目前网上有一种解决方法如下:
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);
然后,再重写按键相关的事件即可。是不是很简单?
不过,如果你仔细看源码的话,会发现 WindowManager.java 中不一定有 FLAG_HOMEKEY_DISPATCHED 这个常量。
这究竟是怎么回事呢。
我初次在网上看到这个修改方式时,没太在意,但后来发现到处在引用,就不得不说说了。
FLAG_HOMEKEY_DISPATCHED 这个常量最初是我在做某个项目的时候,为了测试 HOME 键添加的。
首先要做的就是修改 Framework 层的代码,然后应用层再通过上述方式通知 FW 层我要使用 HOME 键。
不知道哪位大神将应用上的修改放到网上,可是不知道背后是需要 Framework 的修改做支撑的。
好了,到这里大家应该清楚了,这个方法如果有效,需要在这个特定项目或后续项目的代码下才可以。
否则,还是老老实实地去在修改源码上找方法吧。
如果您是做第三方应用的,那么好吧,在现在的版本上,只在应用上解决已经不可能了。