Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键消息

在每次点击Home按键时都会发出一个action为 Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息,我自定义了一个home按键监听工具类,代码如下,使用说明参见类名上方的使用说明:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

/**
 * Home按键监听类
 * 使用说明:
 * 1、初始化HomeListen
 * HomeListen homeListen = new HomeListen( this );
 * homeListen.setOnHomeBtnPressListener( new setOnHomeBtnPressListener(){
 * 		@Override
 * 		public void onHomeBtnPress( ){
 * 			// 按下Home按键回调
 * 		}
 * 		
 * 		@Override
 * 		public void onHomeBtnLongPress( ){
 * 			// 长按Home按键回调
 * 		}
 * });
 * 
 * 2、在onResume方法中启动HomeListen广播:
 * homeListen.start();
 * 
 * 3、在onPause方法中停止HomeListen广播:
 * homeListen.stop( );
 * */
public class HomeListen {
  public HomeListen(Context context) {
    mContext = context;
    mHomeBtnReceiver = new HomeBtnReceiver( );
    mHomeBtnIntentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
  }
  
  public void setOnHomeBtnPressListener( OnHomeBtnPressLitener onHomeBtnPressListener ){
    mOnHomeBtnPressListener = onHomeBtnPressListener;
  }
  
  public void start( ){
    mContext.registerReceiver( mHomeBtnReceiver, mHomeBtnIntentFilter );
  }
  
  public void stop( ){
    mContext.unregisterReceiver( mHomeBtnReceiver );
  }
  
  class HomeBtnReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
      receive( context, intent );
    }
  }
  
  private void receive(Context context, Intent intent){
    String action = intent.getAction();
    if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
      String reason = intent.getStringExtra( "reason" );
      if (reason != null) {
        if( null != mOnHomeBtnPressListener ){
          if( reason.equals( "homekey" ) ){
            // 按Home按键
            mOnHomeBtnPressListener.onHomeBtnPress( );
          }else if( reason.equals( "recentapps" ) ){
            // 长按Home按键
            mOnHomeBtnPressListener.onHomeBtnLongPress( );
          }
        }
      }
    }
  }
  
  public interface OnHomeBtnPressLitener{
    public void onHomeBtnPress( );
    public void onHomeBtnLongPress( );
  }
  
  private Context mContext = null;
  private IntentFilter mHomeBtnIntentFilter = null;
  private OnHomeBtnPressLitener mOnHomeBtnPressListener = null;
  private HomeBtnReceiver mHomeBtnReceiver = null;
}

在Activity中做如下调用即可:

public class HomeListenActivity extends Activity {
  @Override  
  protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_home_listen_layout);  
    initHomeListen( );
  }
  
  @Override
  protected void onResume( ) {
    super.onResume();
    mHomeListen.start( );
  }
  
  @Override  
  protected void onPause() {  
    super.onPause();
    mHomeListen.stop( );
  }
  
  private void initHomeListen( ){
    mHomeListen = new HomeListen( this );
    mHomeListen.setOnHomeBtnPressListener( new OnHomeBtnPressLitener( ) {
      @Override
      public void onHomeBtnPress() {
        showToast( "按下Home按键!" );
      }
      
      @Override
      public void onHomeBtnLongPress() {
        showToast( "长按Home按键!" );
      }
    });
  }
  
  private void showToast( String toastInfoStr ){
    Toast.makeText( this, toastInfoStr, Toast.LENGTH_LONG ).show( );
  }

  private HomeListen mHomeListen = null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值