Android 第三方应用监听home键

如果想要在Android中某个第三方应用中屏蔽Home键,而且此应用没有源码时,此文章可能会给你一点思路。

Android 的按键处理在PhoneWindowManager.java中 ,路径:\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java。

可以找到该类中有interceptKeyBeforeDispatching方法,当你按下按键时,按键事件被底层该方法interceptKeyBeforeDispatching获取到,以Home键为例,在包名为com.nzr.example应用中屏蔽Home键。

代码如下:

public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
        final boolean keyguardOn = keyguardOn();
        final int keyCode = event.getKeyCode();
        final int repeatCount = event.getRepeatCount();
        final int metaState = event.getMetaState();
        final int flags = event.getFlags();
        final boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
        final boolean canceled = event.isCanceled();
        
        if (keyCode == KeyEvent.KEYCODE_HOME) {            
			try {			
				if (ActivityManagerNative.getDefault().getTasks(1, 0,null).get(0).baseActivity.getPackageName().equals("com.nzr.example")) {
					return 0;
				}
			} catch (RemoteException e) {
			
			}
}
此时,在该应用中按下Home键将不会回到桌面。

你可能感兴趣的:(android)