2024年4月19日发(作者:)

Android屏蔽home键

博客分类:

• Android技术

Android

在activity中加上下面这段代码就可以屏蔽home

Java代码

1. @Override

2. public boolean onKeyDown(int keyCode, KeyEvent event)

3. {

4. // TODO Auto-generated method stub

5. // 按下键盘上返回按钮

6. if (keyCode == E_HOME)

7. {

8. Log.i("TAG","home");

9. (0);

10. return true;

11. }

12. else

13. return own(keyCode, event);

14. }

前提是,要重写onAttachedToWindow()这个方法。

Java代码

1. @Override

2. public void onAttachedToWindow()

3. {

4. dow().setType(_KEYGUA

RD_DIALOG);

5. chedToWindow();

6. }

因为android系统自己对home键在PhoneWindowManager中做了处理,不会返

回到上层应用。查看源代码:

frameworkspoliciesbasephonecomandroidinternalpolicyimplPhoneW

1089行

Java代码

1. if (code == E_HOME) {

2. // If a system window has focus, then it doesn't make sense

3. // right now to interact with applications.

4. Params attrs = win != null ? rs() : nu

ll;

5. if (attrs != null) {

6. final int type = ;

7. if (type == _KEYGUARD

8. || type == _KEYGUARD_DI

ALOG) {

9. // the "app" is keyguard, so give it the key

10. return false;

11. }

12. final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_

;

13. for (int i=0; i

14. if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[

i]) {

15. // don't do anything, but also don't pass it to the app

16. return true;

17. }

18. }

19. }

注意,activity中重写onAttachedToWindow()方法需要api 5以上

附API Level对照表

Android 2.3 - API Level 9

2.2 - 8

2.1 - 7

2..0.1 - 6

2.0 - 5

1.6 - 4

1.5 -3

1.1 - 2