UiAutomator和AccessibilityServices不兼容吗?

时间:2015-03-13 14:50:55

标签: android testing compatibility uiautomator accessibilityservice

我运行了一个AccessibilityService(AS),以编程方式获取有关屏幕上当前显示内容的信息。

现在我想设置一些UiAutomator测试用例。但是,如果我有运行UiAutomator的AS,则会出现以下错误:

INSTRUMENTATION_RESULT: shortMsg=java.lang.SecurityException

INSTRUMENTATION_RESULT: longMsg=Permission Denial: getIntentSender() from pid=9700, uid=2000, (need uid=1000) is not allowed to send as package android

我在网上搜索过,我发现很多人都遇到过这个问题但没有解决方法。

这是缺乏兼容性问题还是有办法解决它(或者至少是一种解决方法)?

注意:如果您对如何在没有AS的情况下阅读/访问屏幕内容有其他想法,我会全神贯注(在这种情况下更多的眼睛......)但我看了很多其他解决方案和这是我唯一得到的。

提前致谢。

如果您需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:1)

dazza500 的解决方案可在Kotlin中使用。

在我的情况下,我在用Java编写时在这里修改了我的

 int flags = UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES;
 Configurator.getInstance().setUiAutomationFlags(flags);

 mDevice = UiDevice.getInstance(getInstrumentation());

答案 1 :(得分:0)

这是一个古老的问题,但我发现我自己回答说他们确实不相容。

答案 2 :(得分:0)

我在此方面取得了一些成功:

    val flags = UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
    Configurator.getInstance().uiAutomationFlags = flags

    mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())

此处有关于Configurator的更多详细信息:

https://developer.android.com/reference/androidx/test/uiautomator/Configurator.html

以下GitHub问题帮助我找到了这一点:

https://github.com/appium/appium/issues/4910