Welcome 微信登录

首页 / 移动开发 / Android / Android4.0.x Home键事件拦截监听的方法

本文实例讲述了Android4.0.x Home键事件拦截监听的方法。分享给大家供大家参考,具体如下:
在2.3.x 的主要做法如下,具体实现网上有很多文章
@Overridepublic 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 {@Overridepublic 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程序设计有所帮助。