首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓自动化活动中启动Java?

如何在安卓自动化活动中启动Java?
EN

Stack Overflow用户
提问于 2014-04-02 16:12:54
回答 1查看 1.5K关注 0票数 2

我在我的基础测试类中声明了下面的KeyEvents,用于我正在运行的用于应用程序的Android设备上的自动化套件。

代码语言:javascript
复制
private static final KeyEvent pressPowerDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POWER);
private static final KeyEvent pressPowerUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_POWER);

然后,我找出在Android上下文中运行的活动,并将该上下文转换为一个活动来触发事件:

代码语言:javascript
复制
if (_context instanceof Activity) {
    Activity activity = (Activity) _context;
    activity.dispatchKeyEvent(pressPowerDown);
    activity.dispatchKeyEvent(pressPowerUp);

在自动化过程中检查设备时,上面提到的KeyEvent不会触发。我读过关于KeyListeners模拟KeyEvents的文章,但是我在这里要做的事情并不完全属于这两类(不是使用机器人,而是一个有自己活动的内部测试框架)。

我最初的想法是需要重新调整活动的焦点,但现在我开始认为我需要某种KeyListener,考虑到这是一个测试套件,而不是一个接口类,我不知道该放在哪里;它根本没有任何与它相关的接口!

如果有人知道如何在其他程序中创建和激活KeyEvents,考虑到我们无法访问他们的内部机制(不能修改内部测试工具--只有当前测试套件的运行状态),我们会非常感激的。

编辑:我测试了一下,在尝试使用KeyEvent三次之后,它是否被消耗过:

代码语言:javascript
复制
System.out.println("Was the event consumed? " + activity.dispatchKeyEvent(pressPowerUp))

它从来没有被解雇,让我相信我们需要某种倾听者。如果有人知道如何在类中实现侦听器,或者允许我声明侦听器类并重写"dispatchKeyEvent“方法,这将是一个很大的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 19:42:44

答案其实有点复杂,但也不算太糟,因为我从其他开发人员那里得到了一些更好的反馈。请参见说明这里,但是对于那些不想离开页面的人,基本上可以这样做:

代码语言:javascript
复制
import java.lang.Process;
import java.lang.Runtime;

// your code here
String keyPower = "input keyevent " + KeyEvent.KEYCODE_POWER;
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(keyPower);

简单化,但它可以完成它,无论什么活动是重点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22817235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档