手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android4.0.x Home键事件拦截监听的方法
Android4.0.x Home键事件拦截监听的方法
摘要:本文实例讲述了Android4.0.xHome键事件拦截监听的方法。分享给大家供大家参考,具体如下:在2.3.x的主要做法如下,具体实现网上...

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

【Android4.0.x Home键事件拦截监听的方法】相关文章:

Android ListView数据绑定显示的三种解决方法

解决Android SDK下载和更新失败的方法详解

Android界面刷新的方法分享

Android APK文件在电脑(PC虚拟机)上面运行方法

android中处理各种触摸事件的方法浅谈

android RadioGroup的使用方法

android之计时器(Chronometer)的使用以及常用的方法

Android 中对于图片的内存优化方法

解析Android开发中多点触摸的实现方法

解析Android中使用自定义字体的实现方法

精品推荐
分类导航