gpt4 book ai didi

android - 将触摸发送到 ActivityInstrumentationTestCase2 测试时如何修复 INJECT_EVENTS 权限异常

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:52 25 4
gpt4 key购买 nike

虽然有许多示例表明类似这样的方法应该有效,但以下代码失败了。此代码位于与真实项目关联的测试项目中。

public class MyTest extends ActivityInstrumentationTestCase2<MyActivity> {

public MyTest(String name)
{
super("com.mypackage.activities", MyActivity.class);
setName(name);
}

public void testTap() throws Throwable
{
//Required by MotionEvent.obtain according to JavaDocs
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();

Instrumentation i = getInstrumentation();

//Setup the info needed for our down and up events to create a tap
MotionEvent downEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 300, 20, 0);
MotionEvent upEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, 300, 20, 0);

//Send the down/up tap event
i.sendPointerSync(downEvent);
i.sendPointerSync(upEvent);

//Delay to see the results
Thread.currentThread().sleep(3000);
}

}

这会抛出一个 java.lang.SecurityException:注入(inject)到另一个应用程序需要 INJECT_EVENTS 权限在 i.sendPointerSync() 调用上。我也尝试过 view.onTouchEvent(event) 和 view.dispatchTouchEvent(event) 但没有成功。

我唯一能想到的是,这个工作的例子是否存在于被测试的项目中。这看起来很糟糕,因为建议将测试分离到不同的项目,并能够从构建服务器运行它们,例如:

adb -e shell am instrument -w com.mypackage.activities.test/android.test.InstrumentationTestRunner

最佳答案

这可能意味着您的主项目、测试项目或模拟器版本不同步。

关于android - 将触摸发送到 ActivityInstrumentationTestCase2 测试时如何修复 INJECT_EVENTS 权限异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com