admin 管理员组

文章数量: 1184232

转自文章《Android Back Home监听》

Back键的监听

对于Back键的监听比较容易,可以在多个系统回调处拦截,比如在 activity的下列方法中都可以收到Back键按下的事件 :

Home键的广播监听

对于Home键的监听不是那么容易,因为Home键可以将程序退出放在后台,所以这个事件是直接分发给系统,系统接收到之后做相应处理,Home键的事件不是直接传递到应用里面.所以在上述监听Back键的代码中, 相应的回调中是收不到Home键的事件的 .

参考文后的博客链接, 对Home键的监听主要通过注册广播接收器实现 ,拦截让窗口关闭的系统动作,然后根据Intent里面的具体参数,分析当前到底是Home键, 应用切换键,还是其他功能按键.

接收器实现如下:

注意不同手机的按键不同,所以需要对不同理由做区分.

Home键监听广播注册

广播接收器的注册有两种方式,一种是静态注册,即写在manifest里面声明;另一种是动态注册,即在Java代码里面注册.

上面对Home键实现监听的这个receiver,静态注册如下:

但是发现 静态注册不起作用,即收不到onReceive回调 .

采用动态注册:

在Activity的onResume和onPause里面分别调用:

当然也可以根据需要在其他合适的时机注册和注销.


本文标签: 编程 监听 键的监听