Android 监听home,menu键

1.
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class Homelister {
 private Context mContext;
 private IntentFilter mFilter;
 private OnHomePressedListener mListener;
 
 private InnerRecevier mRecevier;
 public interface OnHomePressedListener {
  public void onHomePressed();//home
  
  public void onHomeLongPressed();//经测试在华为上,这个是最右边的按键,根据不通手机
 }
 
 public Homelister(Context context){
  mContext=context;
  mFilter=new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
 }
 
 //监听
 public void OnHomePressedListener(OnHomePressedListener listenre){
  mListener=listenre;
  mRecevier=new InnerRecevier();
  
 }
 
 //开启广播
 public void startListter(){
  if(mRecevier!=null){
   mContext.registerReceiver(mRecevier, mFilter);
  }
  
 }
 
 //停止广播
 public void stopListter(){
  if(mRecevier!=null){
   mContext.unregisterReceiver(mRecevier);
  }
 }
 
 
 class InnerRecevier extends BroadcastReceiver{
  @Override
  public void onReceive(Context context, Intent intent) {
   // TODO Auto-generated method stub
   String action=intent.getAction();//根据不通的action做不通的操作
   if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
    String reason= intent.getStringExtra("reason");
    if(reason!=null){
     if(mListener!=null){
      if(reason.equals("homekey")){
       mListener.onHomePressed();
      }else if(reason.equals("recentapps")) {
       mListener.onHomeLongPressed();
      }
     }
    }
   }
   
   
  }
  
 }
 2.  private void registerHomeListener() {
  mylis = new Homelister(this);
  mylis.OnHomePressedListener(new OnHomePressedListener() {
   @Override
   public void onHomePressed() {
    // TODO Auto-generated method stub
    System.out.println("xsl="+"OnHome");
    SDKInterface.upQuitState("OnHome");
   }
   
   @Override
   public void onHomeLongPressed() {
    // TODO Auto-generated method stub
    System.out.println("xsl="+"OnMenu");
    SDKInterface.upQuitState("OnMenu");
   }
  });
  mylis.startListter();
 }
 需要在onCreate里面调用当进入页面就开启
3. public void onPause() {
  mylis.stopListter();
在适当的时候要注销,onRestart 里面再次开启

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值