647
技術社區[雲棲]
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