- 浏览: 178139 次
- 性别:
- 来自: 深圳
文章分类
主要就是重写 onAttachedToWindow () 和 onKeyDown (...,...) 这两个方法。
前者是起到拦截作用的,后者是监听到HOME按键事件后的动作,如果没动作可以不要 onKeyDown。
还要注意,要加权限:
// 转载请注明出处: http://aking86.iteye.com/admin/blogs/1317186
虽然网上有很多,但介绍的都不是很详细,也不算深入,我在这里研究了下,并把日志给捞了出来。
里面包括 HOME拦截, BACK拦截,打捞日志。
通过打印日志,还得出一个结论:
onAttachedToWindow() 方法只会执行一次,也就是在第一次 onResume() 之后,以后就不再执行了。
下面是我打印的日志。包含了Activity的生命周期,查看起来很方便。操作流程也就是打开一个页面,先按下HOME,弹出提示,再按下一个Button,里面是 finish()方法。
以下是进了第一个页面,再进第二个页面,再回到第一个页面,再按HOME按键。正常拦截到。
前者是起到拦截作用的,后者是监听到HOME按键事件后的动作,如果没动作可以不要 onKeyDown。
还要注意,要加权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD "></uses-permission>
// 转载请注明出处: http://aking86.iteye.com/admin/blogs/1317186
虽然网上有很多,但介绍的都不是很详细,也不算深入,我在这里研究了下,并把日志给捞了出来。
里面包括 HOME拦截, BACK拦截,打捞日志。
@Override public void onAttachedToWindow () { System.out.println("Page01 -->onAttachedToWindow"); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
@Override public boolean onKeyDown (int keyCode, KeyEvent event) { System.out.println("Page01 -->onKeyDown: keyCode: " + keyCode); if (KeyEvent.KEYCODE_HOME == keyCode) { System.out.println("HOME has been pressed yet ..."); // android.os.Process.killProcess(android.os.Process.myPid()); Toast.makeText(getApplicationContext(), "按了HOME 键...", Toast.LENGTH_LONG).show(); } else if (KeyEvent.KEYCODE_BACK == keyCode) { System.out.println("BACK has been pressed yet ..."); //按了返回 } return super.onKeyDown(keyCode, event); // 不会回到 home 页面 }
通过打印日志,还得出一个结论:
onAttachedToWindow() 方法只会执行一次,也就是在第一次 onResume() 之后,以后就不再执行了。
下面是我打印的日志。包含了Activity的生命周期,查看起来很方便。操作流程也就是打开一个页面,先按下HOME,弹出提示,再按下一个Button,里面是 finish()方法。
[root ]# adb logcat -d -v time -s System.out:I 12-19 13:19:43.290 I/System.out( 824): Page01 -->onStart 12-19 13:19:43.290 I/System.out( 824): Page01 -->onResume 12-19 13:19:43.369 I/System.out( 824): Page01 -->onAttachedToWindow 12-19 13:19:50.959 I/System.out( 824): Page01 -->onKeyDown: keyCode: 3 12-19 13:19:50.959 I/System.out( 824): HOME has been pressed yet ... 12-19 13:22:17.999 I/System.out( 824): Page01 click to exit(finish) 12-19 13:22:18.079 I/System.out( 824): Page01 -->onPause 12-19 13:22:18.590 I/System.out( 824): Page01 -->onStop 12-19 13:22:18.590 I/System.out( 824): Page01 -->onDestroy
以下是进了第一个页面,再进第二个页面,再回到第一个页面,再按HOME按键。正常拦截到。
[root ]# adb logcat -d -v time -s System.out:I 12-19 13:42:09.900 I/System.out( 852): Page01 -->onStart 12-19 13:42:09.910 I/System.out( 852): Page01 -->onResume 12-19 13:42:09.969 I/System.out( 852): Page01 -->onAttachedToWindow 12-19 13:42:19.659 I/System.out( 852): Page01 click to page02 12-19 13:42:19.721 I/System.out( 852): Page01 -->onPause 12-19 13:42:19.990 I/System.out( 852): Page02 -->onStart 12-19 13:42:19.990 I/System.out( 852): Page02 -->onResume 12-19 13:42:20.430 I/System.out( 852): Page01 -->onStop 12-19 13:42:29.149 I/System.out( 852): Page02 click to page01 (finish) 12-19 13:42:29.229 I/System.out( 852): Page02 -->onPause 12-19 13:42:29.349 I/System.out( 852): Page01 -->onStart 12-19 13:42:29.349 I/System.out( 852): Page01 -->onResume 12-19 13:42:29.752 I/System.out( 852): Page02 -->onStop 12-19 13:42:29.752 I/System.out( 852): Page02 -->onDestroy 12-19 13:42:45.779 I/System.out( 852): Page01 -->onKeyDown: keyCode: 3 12-19 13:42:45.779 I/System.out( 852): HOME has been pressed yet ...
发表评论
-
跳转至Google Play,rate,more推广功能
2014-08-19 15:09 1122String appPackageName = getPac ... -
Activity 全透明属性
2014-07-02 15:10 561android:theme="@android:st ... -
android平台运行flash游戏
2014-03-31 19:20 842android平台运行flash游戏 http://blo ... -
遍历指定目录下的图片文件 显示在gridview
2014-03-05 12:49 819gridview布局 <?xml version=& ... -
Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现
2014-01-06 15:11 1036http://blog.csdn.net/guolin_b ... -
android 透明效果
2013-06-28 17:25 915参考http://2960629.blog.51cto ... -
不同应用间数据共享
2013-03-18 11:16 835Android不同应用之间数据的共享有许多方式,但是我觉得还是 ... -
root情况下静默安装
2012-12-17 11:12 840参考 http://blog.csdn.net/su1216/ ... -
app推广必备功能:分享到,更多应用,创建快捷方式
2012-12-14 13:14 1195public class ShareTool { ... -
获取屏幕上正在显示的activity
2012-12-08 17:19 1040参考文章http://chroya.iteye.com/blo ... -
android异步加载数据
2012-11-07 13:55 977参考http://blog.csdn.net/sfshine/ ... -
Activity去除标题栏和状态栏
2012-11-06 15:50 1383方法一:直接在xml文件里设置 //全屏(隐藏标题栏和状 ... -
无法清除的Notification,直到点击了才可以消除
2012-11-06 12:35 2225参考文章 http://www.cnblogs.com/new ... -
vpn
2012-10-30 17:17 705参考文章http://blog.csdn.net/whyonl ... -
开机启动Service
2012-10-25 14:58 869程序执行效果为: 开机后跳转到MainActivity并执行定 ... -
Android 定时执行任务
2012-10-25 13:28 1974本程序执行效果为: 隔3秒打印"收到广播" ... -
打开关闭移动数据、wifi、gps
2012-10-13 23:11 1021参考 http://blog.csdn.net/anzhu_1 ... -
联网自动开启Service
2012-10-12 10:13 948参考http://blog.csdn.net/lvron/ar ... -
从assets复制文件到sd卡
2012-09-28 21:34 2925参考文章 批量从assets复制文件到sd卡 http://l ... -
模仿安卓市场自动下载安装打开apk应用程序
2012-09-28 20:18 3011主程序 package com.example.downl ...
相关推荐
但是,这种方法存在一个问题:从Android 3.0(API级别11)开始,系统不允许开发者直接拦截HOME键,以保护用户体验。在高版本的Android中,这种方式可能无效。为了解决这个问题,我们可以利用BroadcastReceiver来监听...
在4.12版本,如果应用具有SYSTEM_ALERT_WINDOW权限(也称为“浮动窗口”权限),理论上是可以尝试拦截Home键的。但请注意,这种做法并不鼓励,因为它可能会影响用户的正常操作流,甚至可能导致应用被谷歌Play商店...
为了在这些版本及更高版本的系统上拦截Home键,你需要创建一个自定义的`Application`类,并注册为Home键监听器。以下是如何实现这一功能: ```java public class CustomApplication extends Application implements...
在Android 4.4、5.1和6.0版本中屏蔽Home键涉及创建自定义Service、注册BroadcastReceiver、拦截Home键事件以及配置AndroidManifest.xml。通过这种方式,可以实现对Home键的控制,但需谨慎处理,避免对系统稳定性造成...
在Android系统中,Home键是用户最常用的导航键之一,用于快速返回主屏幕。然而,在特定的应用场景下,比如玩游戏时,尤其是像“王者荣耀”这样的竞技游戏,误触Home键可能会导致游戏进程中断,影响玩家体验。为了...
在Android 4.0(Ice Cream Sandwich)及更高版本中,开发者可以实现对Home键的底层监听和拦截操作,这是为了提供更丰富的用户体验和应用程序控制能力。本文将深入探讨这一功能,包括其实现原理、代码解析以及实际...
通过监听和拦截Home键的按压事件,我们可以实现自定义的应用行为,以提升用户体验。本篇文章将深入探讨如何在Android中对Home键进行监听和拦截,包括在应用层监听Home键、处理Home键按压事件以及在框架层拦截Home键...
Android 监听Home键、锁屏、解屏处理方法,都有注释。使用简介: (1)、将内部类(广播类)作为MyBroadcastReceiver类的成员变量,方便activity使用 (2)、对外接口类(如:ScreenStateListener)作为...
然后,我们需要监听和拦截Home键和Back键的事件。在Android中,可以重写Activity的`onKeyDown()`和`onKeyUp()`方法,检测Keycode为`KEYCODE_HOME`(Home键)和`KEYCODE_BACK`(Back键)的按键事件。当检测到这些事件...
这样做的目的是让这个对话框具有足够的优先级来拦截Home键事件。接下来的关键步骤是为对话框添加一个`OnKeyListener`,该监听器可以在Home键被按下时触发。 ```java AlertDialog dialog; dialog = new AlertDialog....
但需要注意的是,自Android 3.1(API级别12)起,为了保护用户体验,直接拦截Home键的行为被限制,除非应用具有SYSTEM_ALERT_WINDOW权限。 - **AccessibilityService**: 如果需要在全局范围内监听Home键,可以使用...
由于直接拦截HOME键可能违反Android的行为规范,因此通常会创建一个悬浮窗或全屏Activity,覆盖整个屏幕,达到在锁屏状态下屏蔽HOME键的效果。 接下来,我们需要在Service或Activity中重写onKeyDown()方法,捕获并...
在Android开发中,有时我们可能需要在特定场景下屏蔽或拦截HOME键的默认行为,例如在用户进行关键操作时防止他们意外退出应用。标题提到的"ANDROID 开发屏蔽HOME键"是一个常见的话题,尤其是在定制系统或者特殊应用...
因此,除非有特别的需求,否则不建议完全拦截Home键。在实际开发中,通常会结合使用这些方法,比如在用户执行特定操作时短暂监听Home键,或者在监听到Home键时执行某些后台任务。 "HomeDemo"项目就是围绕这些技术点...
Log.d("AccessibilityService", "HOME键被按下"); break; // 添加其他按键的处理... } } break; // 其他事件类型处理... } } @Override public void onServiceConnected() { super.onServiceConnected...
可以先禁止Home键,再在onKeyDown里处理按键值,点然后在击Home键的时候就把程序关闭,或者随你DIY。 代码如下: @Override public boolean onKeyDown(int keyCode, KeyEvent event){ if(KeyEvent.KEYCODE_HOME==...
然而,在某些特殊情况下,开发者可能需要监听并拦截Home键事件,比如在应用程序执行关键操作时防止用户意外退出。本篇文章将详细讲解如何在Android 4.0.x版本中实现Home键事件的拦截监听,并对比Android 2.3.x的实现...
在Android系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...
在Android 4.0之前,开发者可以通过注册一个BroadcastReceiver监听ACTION_HOME_KEY_DOWN和ACTION_HOME_KEY_UP事件来实现Home键的拦截。但在4.0之后,出于安全和用户体验考虑,谷歌移除了这些API,直接禁止了对Home键...