当前位置: 移动技术网 > 移动技术>移动开发>Android > Android4.0.x Home键事件拦截监听的方法

Android4.0.x Home键事件拦截监听的方法

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了android4.0.x home键事件拦截监听的方法。分享给大家供大家参考,具体如下:

在2.3.x 的主要做法如下,具体实现网上有很多文章

@override
public void onattachedtowindow() {
  this.getwindow().settype(windowmanager.layoutparams.type_keyguard);
  super.onattachedtowindow();
}

代码移植到4.0.1后 this.getwindow().settype(windowmanager.layoutparams.type_keyguard); 这行报错,

错误提示:java.lang.illegalargumentexception: window type can not be changed after the window is added。

可以有两种处理方式

方法一、修改phonewindowmanager.java

if (keycode == keyevent.keycode_home) {
  //在这里发送一个广播出去
}

在应用里接收到广播后做相应处理,一般是做手机项目才会去改源码。

方法二、检测log,根据log判断是否有点击home键

private boolean istesting = true;
class catchlogthread extends thread {
  @override
  public void run() {
    process mlogcatproc = null;
    bufferedreader reader = null;
    string line;
    while (istesting) {
      try {
        // 获取logcat日志信息
        mlogcatproc = runtime.getruntime().exec(new string[] { "logcat", "activitymanager:i *:s" });
        reader = new bufferedreader(new inputstreamreader(mlogcatproc.getinputstream()));
        while ((line = reader.readline()) != null) {
          if (line.indexof("android.intent.category.home") > 0) {
            istesting = false;
            handler.sendmessage(handler.obtainmessage());
            runtime.getruntime().exec("logcat -c");//删除日志
            break;
          }
        }
      } catch (exception e) {
        e.printstacktrace();
      }
    }
  }
};
handler handler = new handler() {
  public void handlemessage(android.os.message msg) {
    log.i(tag,"home key press");
    //do something here
  };
};

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网