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

 更新时间:2016年02月16日 10:23:35   作者:goleftgoright  
这篇文章主要介绍了Android4.0.x Home键事件拦截监听的方法,对比分析了2.3.x的实现方法,分析了4.0.x实现Home键事件拦截监听的相关技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • Android TextView高级显示技巧实例小结

    Android TextView高级显示技巧实例小结

    这篇文章主要介绍了Android TextView高级显示技巧,结合实例形式总结分析了Android TextView控件进行文字与图片显示的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • 修改Android App样式风格的方法

    修改Android App样式风格的方法

    本文讲的是如何修改Android App样式风格的方法,具体可以看下面的代码
    2013-11-11
  • Android 中TextureView和SurfaceView的属性方法及示例说明

    Android 中TextureView和SurfaceView的属性方法及示例说明

    这篇文章主要介绍了Android 中TextureView和SurfaceView的属性方法及示例说明,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 关于Android中Gradle和jar包下载慢的问题及解决方法

    关于Android中Gradle和jar包下载慢的问题及解决方法

    这篇文章主要介绍了解决Android中Gradle和jar包下载慢的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Android实现精确到天时分秒的抢购倒计时

    Android实现精确到天时分秒的抢购倒计时

    这篇文章主要为大家详细介绍了Android实现精确到天时分秒的抢购倒计时,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 常见Android编译优化问题梳理总结

    常见Android编译优化问题梳理总结

    这篇文章主要介绍了常见Android编译优化问题梳理总结,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Android仿硬币转动微信红包动画效果

    Android仿硬币转动微信红包动画效果

    项目需要研究了一下微信红包动画,即硬币转动的效果,原理其实就是三张不同角度的图片利用AnimationDrawable帧动画进行播放。下面通过本文给大家分享Android仿微信红包动画效果,感兴趣的朋友一起看看吧
    2017-12-12
  • Android网络通信基础类源码分析讲解

    Android网络通信基础类源码分析讲解

    这篇文章主要介绍了Android网络通信基础类源码,包括了Handler、Looper、Thread的分析讲解,对日常开发学习很有帮助,需要的朋友可以参考下
    2024-05-05
  • Android 中 Activity显示隐式跳转

    Android 中 Activity显示隐式跳转

    这篇文章主要介绍了Android 中 Activity显示隐式跳转的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Android内存泄漏导致原因深入探究

    Android内存泄漏导致原因深入探究

    内存管理的目的就是让我们在开发过程中有效避免我们的应用程序出现内存泄露的问题。内存泄露相信大家都不陌生,我们可以这样理解:没有用的对象无法回收的现象就是内存泄露
    2023-02-02

最新评论