Android 主页键和最近应用键的处理onUserLeaveHint

相比主页键(HOME)和最近应用键(APP_SWITCH)的处理,返回键比较简单,复写onKeyDown就可以实现,如下:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //  KeyEvent.KEYCODE_HOME  KeyEvent.KEYCODE_APP_SWITCH
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exitAction();
            return true;
        } else
            return super.onKeyDown(keyCode, event);
    }

HOME和APP_SWITCH比较复杂,尤其是HOME键,如果不特殊设置,有可能会被恶意应用利用。所以即使是处理了HOME键,实测会首先进入Launcher,一段时间后才会执行我们的操作,想必这也是系统层从安全角度的考量,有时间看一下系统源码。

技术分享

尝试过多种方式之后,复写onUserLeaveHint函数比较便捷,如下即可:

 @Override
    protected void onUserLeaveHint() {
        //super.onUserLeaveHint();
        exitAction();
    }

把操作写在了exitAction函数中,这里以启动设置为例:

 private void exitAction() {
        try {
            Intent intent = new Intent();
            ComponentName componentName = new ComponentName("com.android.settings",
                    "com.android.settings.Settings");
            intent.setComponent(componentName);
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui 
我的GitHub:周木水的GitHub https://github.com/zhoumushui

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。