转至: http://pccp.me/archives/448.html
12345 | public void onAttachedToWindow(){ this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } |
在activity中加上这段代码就可以屏蔽home,至于为什么,因为android系统自己对与home键power键在PhoneWindowManager中做了处理,不会返回到上层应用的,但是我在看这部分代码的时候看到:
1234567891011121314151617181920212223 | \frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java 1089行 if (code == KeyEvent.KEYCODE_HOME) { // If a system window has focus, then it doesn't make sense // right now to interact with applications. WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null; if (attrs != null) { final int type = attrs.type; if (type == WindowManager.LayoutParams.TYPE_KEYGUARD || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) { // the "app" is keyguard, so give it the key return false; } final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length; for (int i=0; i<typeCount; i++) { if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]) { // don't do anything, but also don't pass it to the app return true; } } } |
type == WindowManager.LayoutParams.TYPE_KEYGUARD这一句,我们可以看到,android对于锁屏特殊判断了,所以我就模拟这个进行的实现,只是有一点,activity中重写onAttachedToWindow()方法需要api 5以上。
- Android 使用 DowanloadManager 实现下载并获取下载进度实例代码
- Android Design: 九种常见Activity及代码解析之"Login Activity"
- [CSDN]Android应用程序进程启动过程的源代码分析
- Android开源项目源代码分享
- 如何用代码区分android TV和手机? 适配Android TV ?
- java Android 算一定业务规定的工作日(除去法定节假日、调休周末
- Anroid源代码编译相关资源
- 第一行代码Android学习(十)
随机推荐
-
Android(安卓)NDK开发:打包so库及jar包供
-
最美应用-从Android研发工程师的角度之[厨
-
Android程序开发学习笔记系列――基础篇(
-
监听android屏幕亮、暗、锁和关闭系统动
-
Android逆袭!开发者收入与iOS差距正在缩小
-
Android(安卓)Studio中layout属性显示不
-
Android真机连接Eclipse时,打不开File Exp
-
Qt on Android: http下载与Json解析
-
android framework 层源码分析常见方法
-
Android(安卓)UI事件处理、focus处理