源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-03-22 22:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android4.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。 可以有两种处理方式 [b]方法一、修改PhoneWindowManager.java[/b]
if (keyCode == KeyEvent.KEYCODE_HOME) {
  //在这里发送一个广播出去
}

在应用里接收到广播后做相应处理,一般是做手机项目才会去改源码。 [b]方法二、检测log,根据log判断是否有点击Home键[/b]
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相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/410.htm]Android开发入门与进阶教程[/url]》、《[url=http://www.1sucai.cn/Special/423.htm]Android资源操作技巧汇总[/url]》、《[url=http://www.1sucai.cn/Special/375.htm]Android视图View技巧总结[/url]》及《[url=http://www.1sucai.cn/Special/124.htm]Android控件用法总结[/url]》 希望本文所述对大家Android程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部