2.2 禁用系统home键。这里不说了。

近期项目有一个需求,禁用系统的全部键。像menu, home, back.同一时候还要是想点击响应与view的弹出。

就是UI这部分要正常。

back键我们自己onKeyDown 禁用的好开心。

个人觉得最简单的写法请移步:

http://blog.csdn.net/yiding_he/article/details/38527813

这里关键说下4.0后禁用系统home键。

网上找了非常久,基本上都是不能用的。由于都是说由于系统安全原因。android系统把这个事件(home,menu)在框架层就给吸收掉了,并且根本没有分发到应用层。

The Menu key can't be disabled for security reasons, this key is handled by the framework and is never delivered to applications.

http://stackoverflow.com/questions/15459407/disable-home-button-in-android-4-0

看吧,老外的stack overflow上都说没办法。

就当我接近失望时。随便点进了一个搜索页中的某大神的github,https://github.com/shaobin0604/Android-HomeKey-Locker,随便下载试了下,居然work了。

更重要的是这个大神是偶们中国人。

太牛掰了。

膜拜。这里就不细说大神是怎么实现的了,秘诀是建立一个OverlayDialog, 给它设置了一些參数像FLAG_SHOW_WHEN_LOCKED,FLAG_NOT_TOUCH_MODAL等等。

有想研究的同学,请自行下载源代码学习。

这里仅仅说一下使用:

1.到https://github.com/shaobin0604/Android-HomeKey-Locker, 下载大神的代码。

2.HomeLockLib中的HomeKeyLocker.java放到自己的Util包下。

3.HomeLockLib中的styles中的OverlayDialog相关部分复制到自己的styles中。

4.在你自己的AndroidManifest中增加

<uses-permission
android:name="android.permission.SYSTEM_ALERT_WINDOW"
/>

5.在想要锁键的地方new HomeKeyLocker 对象。

private HomeKeyLocker mHomeKeyLocker;
mHomeKeyLocker = new HomeKeyLocker();

之后须要锁键使用:

mHomeKeyLocker.lock(mActivity.this);

解锁使用:

mHomeKeyLocker.unlock();

6.在自己的destroy方法中增加:

@Override
protected void onDestroy() {
super.onDestroy();
mHomeKeyLocker.unlock();
mHomeKeyLocker = null;
}

这样就能够开心的玩耍了。

android 4.0 禁用系统home键的更多相关文章

  1. android 4.0.4系统下实现apk的静默安装和启动

    转 android 4.0.4系统下实现apk的静默安装和启动 分类: Android 2013-02-14 14:13 1762人阅读 评论(10) 收藏 举报 最近在android 4.0.4系统 ...

  2. 【转】android 5.0 64bit系统加载库文件失败问题浅析

    原文网址:http://blog.csdn.net/andrewblog/article/details/43601303 最近公司的一个项目使用android 5.0 64 bit平台,相对以前版本 ...

  3. Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException

    一.写在前面 最近由于廖子尧忙于自己公司的事情和OkGo(一款专注于让网络请求更简单的网络框架) ,故让LZ 接替维护ImagePicker(一款支持单.多选.旋转和裁剪的图片选择器),也是处理了诸多 ...

  4. 【适配整理】Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException

    一.写在前面 最近由于廖子尧忙于自己公司的事情和 OkGo (一款专注于让网络请求更简单的网络框架) ,故让LZ 接替维护 ImagePicker(一款支持单.多选.旋转和裁剪的图片选择器),也是处理 ...

  5. Android 5.0以下系统支持TLS 1.1/1.2协议版本

    一.背景 项目中,客户端与服务端之间普遍使用Https协议通信,突然接到测试同事反馈Android5.0以下手机上,App测试服使用出现问题,出现SSL handshake aborted错误信息,但 ...

  6. 关于 Android 5.0 原生系统网络图标上的感叹号问题解决方法

    解决方案 adb shell settings put global captive_portal_server g.cn 参考 关于 android 5.0 网络图标上的感叹号及其解决办法

  7. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...

  8. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  9. Android 5.0以上获取系统运行进程信息

    在Android 5.0以上系统,调用getRunningAppProcesses 方法返回的列表为空,这是因为谷歌考虑到安全原因,已经把这个方法移除掉了, 那以后要获取系统运行的后台进程这个方法用不 ...

随机推荐

  1. set(NOIP模拟赛Round 4)

    这题很神奇,对吧. 标程还理解了好久,才明白. 这道题需要用状压DP.首先我们看到总共只有15个字符串,所以可以用hash存储状态. 然后我们还需要一维用来存储DP到第几个字符. 所以dp[i][j] ...

  2. nessus plugins 离线更新

    1.打开 https://plugins.nessus.org/v2/offline.php 2.申请Activation Code http://www.tenable.com/products/n ...

  3. 数据库函数:sqlite3_exec() SQL语句

    函数:sqlite3_exec(),称为便捷函数,封装了好多任务. 函数声明: int  sqlite3_exec( sqlite   * , const  char * sql , sqlite_c ...

  4. android 研究的环境搭建、高效工具、网站资源

    =================  2015 年 10 月 14 号 更新 著名的android开源社区xda有一个帖子,详细描述了android开发和研究环境的初始搭建过程: http://for ...

  5. 右上角X灰化

    CMenu* menu = this->GetSystemMenu(FALSE); menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRA ...

  6. Appium+python自动化7-输入中文【转载】

    前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点搜索按钮,进 ...

  7. PostgreSQL备份和恢复数据表

    备份数据表: pg_dump -U user_name db_name -t table_name -f /tmp/backup_file.suffix 恢复数据表: 方法1: 登录数据库:\i /t ...

  8. react 使用antd的TreeSelect树选择组件实现多个树选择循环

    需求说明,一个帐号角色可以设置管理多个项目的菜单权限 且菜单接口每次只能查询特定项目的菜单数据[无法查全部] 开发思路: 1,获取项目接口数组,得到项目数据 2,循环项目数据,以此为参数递归查询菜单数 ...

  9. Python的网络编程[1] -> FTP 协议[1] -> 使用 pyftplib 建立 FTP 服务器

    使用 pyftplib 建立 FTP 服务器 pyftplib 主要用于建立 FTP Server,与 ftplib 建立的 Client 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 服 ...

  10. 新建一个兼容eclipse和myeclipse、IDEA都兼容的项目结构(maven)

    以下观点为个人理解,没实践过,后续再实现. 思路: 1.eclipse和myeclipse.IDEA这些开发工具新建的各自的项目时,都有自己的一套思路,项目结构都有各自的特点. 2.如果是这些开发工具 ...