Android监听home键的方法详解

2019-12-10 19:07:25王旭

2.注册监听

可以在Activity里注册,也可以在Service里面

//注册广播
registerReceiver(mHomeKeyEventReceiver, new IntentFilter(
  Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

完整的代码如下:

package com.example.homedemo;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //注册广播
  registerReceiver(mHomeKeyEventReceiver, new IntentFilter(
    Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
 }
 /**
  * 监听是否点击了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键,显示最近使用的程序列表
    }
   }
  }
 };
}

下面是以前写的监听方式,现在大部分都不好使了,这次作为更新:

监听Home键一直困扰这大家,也是让大家非常纠结的问题,从我的文章点击量上看,就知道这个问题有多么难以解决。

这里又来了一次修改,第一部分是解决2.2或者之前系统版本home的监听,第二部分是4.0.x的home监听