为什么不工作?我正在尝试为按钮创建一个onClickListener,其效果与按下D-pad上的“向下”键相同。 Eclipse给了我一个错误,说:“不能从InputMethodService类型的”帮助!“中对非静态方法sendDownUpKeyEvents(int)进行静态引用。
downButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
InputMethodService.sendDownUpKeyEvents(0x00000014);
}
答案 0 :(得分:4)
您尝试以静态方式调用非静态方法。您需要首先获取服务的实例,然后在实例上调用该方法。此外,您正在进行按键模拟的方式看起来不正确。 UPD: 经过一番挖掘后,我设法模拟了关键事件,尝试:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
}
}).start();
答案 1 :(得分:3)
相同的解决方案,只需要一个参数。
private void InjectKeys(final int keyEventCode) {
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(keyEventCode);
}
}).start();
}
只需拨打电话并传递KeyEvent.KEYCODE
,如此InjectKeys(KeyEvent.KEYCODE_DPAD_DOWN);
请不要downvote或upvote我,我的答案与上面的答案完全一样,我只是将其修改为使用参数。