精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-26
moyue 写道 楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。 屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。 谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)? |
|
返回顶楼 | |
发表时间:2011-10-27
不错的一章!
|
|
返回顶楼 | |
发表时间:2011-10-27
phoenixfu 写道 moyue 写道 楼主的分析不错,基本能实现屏蔽HOME键,而且可以说是简单完美,但这个还是有问题的,只能屏蔽自己定义的activity和dialog,对于系统提供的就无能为力了。
举个简单的例子,在activity中屏蔽HOME键,如果有个editText,长按editText可以弹出输入法或者文字操作的一个dialog,这时候再按HOME就返回主界面了,屏蔽无效,因为这个dialog是系统提供的。 屏蔽HOME键在某些系系统开发中确实有这个需要,但并不能完美解决,我做过的一个项目也是用楼主的方法屏蔽的,实际使用的时候通过系统dialog绕过了屏蔽,最终整个重新设计,换了实现方式。借此也给有这个需求的同学提个醒,一定要多测试,保证没问题再做。 谢谢你的提醒,如果把这种需求细致到控件甚至控件内部调用的dialog等,的确会有种治标不治本的感觉(幸好没在标题上加上完美2字,否则囧死~)。那应该如何解决这个系统控件的dialog呢?难道用到的控件全部重写(继承原控件,并修改其调用的dialog)? 关于edittext,其实完全可以自己实现一个输入的界面来进行输入操作,而不去使用系统的,对于突然弹出的其他系统对话框之类的,我们可以在后台侦测,然后关闭这些。 个人觉得楼主提供的这种方案已经相当不错了。 |
|
返回顶楼 | |
发表时间: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权限才行。 这是我猜想的,还没时间去研究,如果说错了,别见笑~ |
|
返回顶楼 | |
发表时间:2011-10-28
很好很强大
|
|
返回顶楼 | |
发表时间: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来保证。软件是死的,人是活的,有时候换个思路去做,不要纠结于软件本身。 |
|
返回顶楼 | |
发表时间:2011-10-31
楼主很给力!!
|
|
返回顶楼 | |
发表时间:2012-06-27
想請問moyue 我現在要弄跟你說的相同的app 請問如何忽略使用者按下的home以及back 為我也不希望使用者可以退出我的軟體
|
|
返回顶楼 | |
发表时间:2012-06-27
想請問各位高手 這篇文章 http://dicky-chiang.blogspot.tw/2011/06/how-to-capture-home-key-event.html 裡面寫的新增一個type 然後最後面的InputDispatcher.h 這個檔案是位在哪邊阿 我找好久都找不到
|
|
返回顶楼 | |
发表时间:2012-07-03
介绍得很详细,这个很实用,学习了!
|
|
返回顶楼 | |