Android监听home键(附带广播的使用)
如果想监听home键,实现方式有几种
第一种方式:Android 对home键的监听,加上了权限,必须取得对处理home键事件的权限,才能对home键进行操作,
只对2.2及以前的系统有效。
1,加上权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
就是让键盘守卫失去能了,根据英文大体是这个意思
2,重载以下两个方法@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(KeyEvent.KEYCODE_HOME==keyCode){**
//写要执行的动作或者任务
android.os.Process.killProcess(android.os.Process.myPid()); **
}
return super.onKeyDown(keyCode, event);
}
@Override public void onAttachedToWindow(){ this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
此方法适用于Android2.2以前的系统
第二种广播的方式
首先定义一个广播:
/**
* 监听是否点击了home键将客户端推到后台
*/
private BroadcastReceiver 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)) {
//表示按了home键,程序到了后台
Toast.makeText(getApplicationContext(), "home", 1).show();
}else if(TextUtils.equals(reason, SYSTEM_HOME_KEY_LONG)){
//表示长按home键,显示最近使用的程序列表
}
}
}
};

在service或者在Activity中注册广播
//注册广播
registerReceiver(mHomeKeyEventReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
