Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 4.0 禁用系統home鍵

android 4.0 禁用系統home鍵

編輯:關於Android編程

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中加入

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


這樣就可以開心的玩耍了。



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved