论坛首页 移动开发技术论坛

dialog,activity 屏蔽Home键详解

浏览 23891 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-26  
moyue 写道
楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。
屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。


谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)?
0 请登录后投票
   发表时间:2011-10-27  
不错的一章!
0 请登录后投票
   发表时间:2011-10-27  
phoenixfu 写道
moyue 写道
楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。
屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。


谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)?


关于edittext,其实完全可以自己实现一个输入的界面来进行输入操作,而不去使用系统的,对于突然弹出的其他系统对话框之类的,我们可以在后台侦测,然后关闭这些。

个人觉得楼主提供的这种方案已经相当不错了。
0 请登录后投票
   发表时间:2011-10-27  
figofuture 写道
phoenixfu 写道
moyue 写道
楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。
屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。


谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)?


关于edittext,其实完全可以自己实现一个输入的界面来进行输入操作,而不去使用系统的,对于突然弹出的其他系统对话框之类的,我们可以在后台侦测,然后关闭这些。

个人觉得楼主提供的这种方案已经相当不错了。

EditText在输入之前,长按,会出现"全选"提示的ALertDialog,包括Spring,Menu等都会出现这种系统类的Dialog,问题是水花四溅啊。
后台应该怎么监听?重写系统的Dialog把文件编译进去?
如果有相关的监听机制,那么最起码要得到System权限才行。
这是我猜想的,还没时间去研究,如果说错了,别见笑~
0 请登录后投票
   发表时间:2011-10-28  
很好很强大
0 请登录后投票
   发表时间:2011-10-28  
phoenixfu 写道
figofuture 写道
phoenixfu 写道
moyue 写道
楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。
屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。


谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)?


关于edittext,其实完全可以自己实现一个输入的界面来进行输入操作,而不去使用系统的,对于突然弹出的其他系统对话框之类的,我们可以在后台侦测,然后关闭这些。

个人觉得楼主提供的这种方案已经相当不错了。

EditText在输入之前,长按,会出现"全选"提示的ALertDialog,包括Spring,Menu等都会出现这种系统类的Dialog,问题是水花四溅啊。
后台应该怎么监听?重写系统的Dialog把文件编译进去?
如果有相关的监听机制,那么最起码要得到System权限才行。
这是我猜想的,还没时间去研究,如果说错了,别见笑~

重写系统Dialog 这个方案基本不可行,还不如修改android源代码来得方便,至于监听,没做过,不多说。
有时候换个思路去做软件,比如说为什么要屏蔽HOME键,我的需求中必须要登录软件才能使用平板电脑,不能退出我的软件。我用了一个service,启动定时器来验证是否登录,如果没有登录,那么就弹出登录的Activity,即使通过系统dialog绕过了我的软件,依然有service来保证。软件是死的,人是活的,有时候换个思路去做,不要纠结于软件本身。
0 请登录后投票
   发表时间:2011-10-31  
楼主很给力!!
0 请登录后投票
   发表时间:2012-06-27  
想請問moyue   我現在要弄跟你說的相同的app   請問如何忽略使用者按下的home以及back  為我也不希望使用者可以退出我的軟體
0 请登录后投票
   发表时间:2012-06-27  
想請問各位高手   這篇文章  http://dicky-chiang.blogspot.tw/2011/06/how-to-capture-home-key-event.html    裡面寫的新增一個type  然後最後面的InputDispatcher.h  這個檔案是位在哪邊阿  我找好久都找不到
0 请登录后投票
   发表时间:2012-07-03  
介绍得很详细,这个很实用,学习了!
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics