Android4.0.x Home键事件拦截监听的方法
程序员文章站
2024-02-20 14:43:16
本文实例讲述了android4.0.x home键事件拦截监听的方法。分享给大家供大家参考,具体如下:
在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相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。