怎么禁用Home键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么禁用Home键?相关的知识,希望对你有一定的参考价值。

求助:有人知道怎么禁用Home键吗?怎么才能把自己做的homescreen设为默认的谢谢

下边是android4.0之后屏蔽Home键的方法。
代码如下:

public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;

在onCreate函数中添加如下代码
代码如下:

this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);
参考技术A 你可以试试,我在开机后启动一个Service里面重写了onKeyDown,我log,根本就拦截不到点击home键的事件 参考技术B 1:在onKeyDown里处理按键值。
代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)

if(KeyEvent.KEYCODE_HOME==keyCode)

android.os.Process.killProcess(android.os.Process.myPid());
return
super.onKeyDown(keyCode, event);

@Override
public void
onAttachedToWindow()

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);

super.onAttachedToWindow();


2:点击Home键即可程序关闭。
参考技术C 我继承的是InputMethodService或者实现KeyEvent.Callback都可以

android 4.0 禁用系统home键

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;
	}


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












以上是关于怎么禁用Home键?的主要内容,如果未能解决你的问题,请参考以下文章

android 4.0 禁用系统home键

为啥iphone按一次home键就直接连后台都退出了?

怎么取消ipad上的home键

山寨苹果手机怎么一按home键,全部应用就完全退出了?

对于android手机, 长按home键,能起啥作用?

appium怎么按下系统按键?如按下返回键home键等等