Android实现对HOME键的捕获和屏蔽
来源:互联网 发布:什么移动电源 知乎 编辑:程序博客网 时间:2024/05/29 09:32
一、Home键的扑捉
- Android4.0 版本以下时候处理:
1.1. 在AndroidManifest.xml中加上权限,禁止HOME键。
1
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
1.2 重载以下两个方法。
1 2 3 4 5 6 7 8 910111213
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(KeyEvent.KEYCODE_HOME==keyCode){ //写要执行的动作或者任务 doSomething(); } return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow(){ this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
- Android4.0以上的版本:
捕获系统日志。
如果我们留意观察就可以发现,当我们按下HOME键的时候,Logcat就会输出以下信息:
1
I/ActivityManager( 144): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher } from pid 144
这样我们只要捕获logcat的信息就能监听到HOME键了。
- 加权限:
1
<uses-permission android:name="android.permission.READ_LOGS"/>
- 捕获logcat信息。启动线程监控,建议将线程的启动放到concrete()中。
1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041
//监听HOME键,听着音乐服务。 public void listenerHome() { new Thread(new Runnable() { public void run() { Process mLogcatProc = null; BufferedReader reader = null; try { /* 获取logcat信息 * logcat:日志类型为logcat * ActivityManager日志Tag为ActivityManager * I:<span style="font-size:16px;">logcat的标识分为:(V</span> :Verbose<span style="font-size:16px;"> D </span>:Debug<span style="font-size:16px;"> I</span> :Info<span style="font-size:16px;"> W</span> :Warning<span style="font-size:16px;"> E</span> :Error<span style="font-size:16px;"> * F</span> :Fatal<span style="font-size:16px;"> S</span> :Silent)这里I代表Info。 * *:S:日志的所有内容 */ mLogcatProc = Runtime.getRuntime().exec( new String[] { "logcat", "ActivityManager:I *:S" }); reader = new BufferedReader(new InputStreamReader( mLogcatProc.getInputStream())); String line; while ((line = reader.readLine()) != null) { if (line.indexOf("android.intent.category.HOME") > 0) { Looper.prepare(); //bgmusic_playler.stop(); //捕获到HOME键后发送message,在handler中可以自主处理。 handler.sendMessage(handler.obtainMessage()); Runtime.getRuntime().exec("logcat -c"); Looper.loop(); break; } } } catch (Exception e) { e.printStackTrace(); } } }).start(); }
二、Home键的屏蔽
android4.0 以上的版本屏蔽HOME按键有个方便的方法,如下:
1234
/** Window flag: When this flag is set, the home key can be dispatched * to the window. * {@hide} */ public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;
- 在oncreate()中的setContentView之前写一句代码:this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED,FLAG_HOMEKEY_DISPATCHED);当然要取消这个标识位,加一句this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED);即可。
- 再重写onkey事件。
示例如下:
1 2 3 4 5 6 7 8 91011
......import android.view.WindowManager;
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED,FLAG_HOMEKEY_DISPATCHED); this.setContentView(R.layout.keys_test_layout); ......... }
android 开发群:66925376
- Android实现对HOME键的捕获和屏蔽
- Android笔记--实现Android4.1.2对home键的屏蔽
- android Home键 屏蔽,捕获,修改
- android Home键 屏蔽,捕获,修改
- android Home键 屏蔽,捕获,修改
- android back和home键的捕获
- android back和home键的捕获
- 笔记86--实现对HOME键的捕获
- 重写view的onAttachedToWindow () 和 onDetachedFromWindow ()与Home键屏蔽,捕获,修改
- 重写view的onAttachedToWindow () 和 onDetachedFromWindow ()与Home键屏蔽,捕获,修改
- Android 屏蔽BACK键和HOME键的方法
- android 4.0 屏蔽home键实现
- android 4.0 屏蔽home键实现
- android 4.0 屏蔽home键实现
- android屏蔽返回键和Home键
- Android屏蔽返回键和Home键
- android屏蔽返回键和home键
- Android HOME键屏蔽
- Javascript特效代码大全(420个)
- ie8下div中单个input的margin和padding失效
- 数据库备份 Mysql table '' doesn`t exist .(mysql数据库复制迁移时除了复制文件夹外还要复制data目录下的ibdata1文件)
- oracle11g在windows2008上安装
- Win7 64位系统下思维导图XMind的Java环境配置
- Android实现对HOME键的捕获和屏蔽
- SQL计算两个日期之间的工作天数(除过周六日的天数)
- C++程序员必看书单
- Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试)
- SGE日志分析聚类算法
- 不同浏览器上中文文件名的上传/下载乱码问题
- c++primer 课后习题个人解答 part1 4.3 C-Style Character Strings
- 虚函数
- AOP学习-基于Emit和Attribute的简单AOP实现