Spec需要模擬長按Home鍵。
對KeyEvent.KEYCODE_HOME 跟蹤到PhoneWIndowManaer.java中,其中interceptKeyBeforeDispatching()有:
if (repeatCount == 0) {mHomePressed = true;
} else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
if (!keyguardOn) {
handleLongPressOnHome();
}
}
因此,我們需要創建一個KeyEvent ,flags爲 KeyEvent.FLAG_LONG_PRESS ,而且repeatCount不爲0.
代碼:
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME);
keyEvent = keyEvent.changeTimeRepeat(keyEvent,SystemClock.currentThreadTimeMillis(),1,KeyEvent.FLAG_LONG_PRESS);
try {
final boolean result = (IWindowManager.Stub.asInterface(ServiceManager.getService("window")))
.injectKeyEvent(keyEvent, true);
} catch (RemoteException e) {
}
另外需要權限的修改的修改:
Android.mk中添加: LOCAL_CERTIFICATE := platform
AndroidMainfest.xml添加權限: <uses-permission android:name="android.permission.INJECT_EVENTS"></uses-permission>