Acitivyt最小化终极解决方案_第1页
Acitivyt最小化终极解决方案_第2页
Acitivyt最小化终极解决方案_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、android中捕获home事件的终极解决方案以及最小化应用android设计者处于安全考虑,那个home键在应用层是捕获不到的,只冇修改底层的代码 才可以获取其事件监听,但是修改底层对于应用开发者來说有点麻烦,那如何在activity 层监听到home键哪?先禁止home键,再在onkeydown里或者dispatchkeyevent处理按键值,点击home键的时 候就把程序最小化,或者随你的需求。首先第一步:加权限禁止home键<uses-permission android:name=>, androidpermission. disable_keyguard” />人

2、家不要以为添加这个权限示,所有的activity的home键都不可以用了,反而添加这个权 限后,跟不添加是一样的效果,就是所有的activity的home键都没有禁止,如果你想对某 个activity禁止home的事件,那么你只需要在某个activity中加上此方法:©overridepublic void onattachedtowindow()this. getwindo讥).settype(windowmanager. layoutparams. type_keyguard);super onattachedtowi ndow();这个时候,此activity的home键才被禁

3、止掉,那么在此activity 'i1做如下操作,即可最 小化应用,或者你口己添加需求的代码。©overridepublic boolean onkeydown(ini keycode, keyevent event)if (event. getaction() = keyevent. acti0n_d0wn && keycode = keyevent. keycode_home)/最小化应用intent intent = new intent(intent. action main);intent. setflags(intent. flag_acttvtt

4、y_new_task);intent. addcategory(intent. category home);startactivity(intent);return true;return super, onkeydown(keycode, event);呵呵,至此,我高兴的很,屁颠屁颠的去测试了,先丿ij模拟器测试没有问题,再川真机测试, 我去,问题乂出现了,home事件截获不到,这是为什么啊?大家不要急,听我慢慢道来。 在2. 2以前的模拟器用上述方法是没冇问题,但是从3. 0开始后的模拟器就不行了包括真机。 反正我用了几款机子测试是不行的,哪如何解决此问题哪?大家都知道点击home触发

5、onpause. onstop这两个方法,在模拟器测试都触发,但是一旦 到真机测试有些机子都触发,但是有些机子就不触发onstop,或者如果你安装了 360软件 后,一般都不触发,当你从通知栏拉下后在点击乂触发了 onstop所以我们一般在onpause 方法里截获home事件然后处理,这种截获方式用logcat0没错就是用logcat.终极解决方案开始:1. 首先你要在androidmanifest. xml添加一项读取系统log的权限<!-允许程序读取系统日志-<uses-pormission android:name二” android, permission. read_l

6、0gs" />2./* “logcat”不用说了吧,我们就是要监听它* "activitymanager”表示监听的tag这里以上面点击按钮输出的log信息为例。* “i”表示监听的log类型,当然这里还可以写其它类型。verbose(v)、debug(d). info(i)、warn(w)、error(e),不过须要与监听的与tag 对称才可以。* “*:s”表示监听所有的信息,这里表示只要tag是activitymanager , logcat类型为i的 所有log都会被获取到。*点击home时会触发onpause> onstop但是在某些手机上可能触发on

7、stop延迟或者不触 发*/new thread(new runnable()©overridepublic void run()process logcatprocess = null;bufferedreader bufferedreader = null;try/*获取系统logcat日志信息*/ logcatprocess = runtime. getruntime(). exec(new string "logcat” , activitymanager:i *:s” );bufferedreader = new bufferedreader(newinputst

8、reamreader(logcatprocess. getlnputstream();string line;while (line 二 bufferedreader. readline() != null)if (line. indexof( cat=android, intent, category. home “) > 0)/*这里可以处理你对点击home的操作哦我这里是完全退出应用*/session, exit ();catch (exception e)e. printstacktrace ();). start();到这里大家看明白了没。就是监听系统日志。手机点击home的日

9、志是:intent act=android intent. action. main cat=android intent. categoryhome fig=0 x10200000 cmp=com. dianxinos. dxhome/com dianxinos. iauncher2 lduncher from pid 1277模拟器是:starting activity: intent act=android. intent. action. maincat二android, intent, category. home fig二ox 10200000cmpcom android launcher/c(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论