Android 中屏蔽 Home 鍵
原文:https://www.cnblogs.com/newcj/articles/2066337.html
public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
在activity中加上這段代碼就可以屏蔽home,至於為什麼,因為android係統自己對與home鍵power鍵在PhoneWindowManager中做了處理,不會返回到上層應用的,但是我在看這部分代碼的時候看到:
\frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java 1089行 if (code == KeyEvent.KEYCODE_HOME) { // If a system window has focus, then it doesn't make sense // right now to interact with applications. WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null; if (attrs != null) { final int type = attrs.type; if (type == WindowManager.LayoutParams.TYPE_KEYGUARD || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) { // the "app" is keyguard, so give it the key return false; } final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length; for (int i=0; i<typeCount; i++) { if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]) { // don't do anything, but also don't pass it to the app return true; } } }
type == WindowManager.LayoutParams.TYPE_KEYGUARD這一句,我們可以看到,android對於鎖屏特殊判斷了,所以我就模擬這個進行的實現,隻是有一點,activity中重寫onAttachedToWindow()方法需要api 5以上。
最後更新:2017-04-02 22:16:24