Android之Back键和HOME键拦截处理

半个读书人 2019-04-26 23:38  阅读 107 views 次 评论 0 条
站长的个人作品

一、拦截BACK

一般的应用有两种方法可以获取,当然你也可以修改Framework层代码进行拦截,但这个真的没必要修改。

方法1、重写Activity的onKeyDown方法

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
           //do something ...
           return true;
    }
    return super.onKeyDown(keyCode, event);
}

方法2、重写onBackPressed方法

@Override
public void onBackPressed() {
    // 注意:仅适用于2.0或更新版的sdk版本
    return;
}

既然一般的应用都可以搞定,而且Android给了标志接口,那就不用修改Framework了。

二、拦截HOME

在以前的版本也可以通过重写Activity的onKeyDown方法(跟BACK键一样)进行拦截,但是后面Android把权限收回了。Android 6.0(其他版本忘记了)以后是不可以拦截HOME键的。因此如果你真的要拦截,那只能修改PhoneWindowManager.java做拦截判断了。

    @Override
    public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int 
    policyFlags) {

    if (keyCode == KeyEvent.KEYCODE_HOME) {
       //do something ...
    }
}
温馨提示:文章内容系作者个人观点,不代表博客志对观点赞同或支持。
版权声明:本文为投稿文章,感谢 125啦读书导航(125la.com) 的投稿,欢迎分享本文,转载请保留出处!
站长的个人作品
125la导航_独立博客导航平台

发表评论

您必须 [登录] 才能发表留言!

或者微信联系我