java - 无需按任何键即可启动按键事件

标签 java android

我想启动按键事件(back p.e),但不按任何键。我看到了诸如 onKeyDownonKey 之类的函数,但对于这些函数,我需要相应的按键事件。

我还尝试初始化一个KeyEvent,如下所示:

KeyEvent telo = new KeyEvent(0,0,0,4,0,0,0,158,72);
onKeyDown(KeyEvent.KEYCODE_BACK, telo);

但它不起作用,可能是因为我不知道 downTimeeventTimedeviceId 的值。

最佳答案

如果您出于测试目的而希望这样做。 Instrumentation API 允许您将关键事件发送到您自己的 Activity 。

具体来说:

Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

似乎是您正在寻找的内容。

编辑:

此代码 fragment 将后退键事件发送到 Activity 窗口。请注意,无法从主线程调用 sendKeyDownUpSync() 方法。

final Instrumentation i = new Instrumentation();
Thread t = new Thread(){
    public void run(){
      i.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
    }
};
t.start();

关于java - 无需按任何键即可启动按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14962218/

相关文章:

java - 解析包含多个符号的字符串会导致崩溃

java - Java 中的字符串到日期转换

java - 检查字符串是否包含 CJK(中文)字符

java - 错误 : Failed to resolve: com. android.support :cardview-v7:23. 4.0

android - 在 Android 中使用 DownloadManager 从标题中获取文件名

java - Apache Tika 中的 CSV 检测器

java - 根据RecyclerView中的json文件Id传递Json数据

android - Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 在 android 11 中不起作用

layout - 单击前是否有带有可见列的滑动菜单?

java - 将字符串 "1/1/1970"转换为格式为 "19700101000000"的日期对象?