Android监听Home键的方法有很多,但是有些不够实用,下面我介绍两种方法:
方法1:
Home键的事件被系统/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java给劫持了,然后会发送一个广播出来,只要监 听这个广播就行
代码如下:
- 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键,显示最近使用的程序列表
- }
- }
- }
- };
registerReceiver(mHomeKeyEventReceiver, new IntentFilter( Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
ondestroy方法里反注册:unregisterReceiver(mHomeKeyEventReceiver);
方法2:
这个方法比较简单,相对合理,不用注册广播,只要重写以下方法就行
@Override
protected void onUserLeaveHint() {
Log.d("aeon","onUserLeaveHint");
super.onUserLeaveHint();
}