大家可能都知道对于安卓程序中的Back键的监听通过onKeyDown的方法就可以得到监听了,但是对于Home键可能也想通过这样的方式,但是经过实践后,就可以发现,这样的方法是行不通的。因为Home键是系统级别的,而和Back级别不一样,所以,如果想要监听Home那么就必须想到其他的方法了。。
下面就介绍一个简单的Home键的监听方法吧!!
贴一下代码:
/*
home键监听,则退出应用
*/
private void registerHomeKey() {
if (mHomeKeyEventReceiver == null) {
mHomeKeyEventReceiver = new BroadcastReceiver() {
String SYSTEM_REASON = "reason";
String SYSTEM_HOME_KEY = "homekey";
String SYSTEM_HOME_KEY_LONG = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {
finish();
} else if (TextUtils.equals(reason,
SYSTEM_HOME_KEY_LONG)) {
// 表示长按home键,显示最近使用的程序列表
}
}
}
};
registerReceiver(mHomeKeyEventReceiver, new IntentFilter(
Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
我想大家一看应该就能明白了,这上面显示的就是一个广播的方法。。这方法简单的原因在于,这样写的话,很方便就可以调用这个方法,而不需要去XML中去注册广播的信息,比一般继承广播类的方法简单很多。但是别忘记了,通过继承的方法是最好也是最清晰的,所以建议的话还是通过将广播单独写到一个类的方法会比较好。
对于上面的监听方法,如果你想实现监听Home键,那么将这个方法一般在onCreate()方法中进行调用就可以了,从而实现注册广播的方法。
贴一下销毁广播的方法的代码块:
if(mHomeKeyEventReceiver!=null)
{
unregisterReceiver(mHomeKeyEventReceiver);
mHomeKeyEventReceiver = null;
}
这方法很简单,不需要过多的解释了。。。。这代码块一般放在 onDestroy()方法里面就好了,这样实现功能的同时,又能将资源进行释放回收还是不错的。
上面就是对Home键简单监听的广播方法了,当然还有很多实现的方法,但是建议最好用广播来进行实现。好了,欢迎大家的共同学习。。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/12459.html