2014-11-25 2 views
10

Всякий раз, когда я пытаюсь использовать UiAutomation в любом испытании через getInstrumentation().getUiAutomation(), процесс выходит из строя с этим исключением:java.lang.SecurityException: Разрешение Отрицание: getIntentSender() при использовании UIAutomation в тесте

java.lang.SecurityException: Permission Denial: getIntentSender() from pid=30334, uid=2000, (need uid=1000) is not allowed to send as package android 
     at android.os.Parcel.readException(Parcel.java:1540) 
     at android.os.Parcel.readException(Parcel.java:1493) 
     at android.app.IUiAutomationConnection$Stub$Proxy.disconnect(IUiAutomationConnection.java:225) 
     at android.app.UiAutomation.disconnect(UiAutomation.java:240) 
     at android.app.Instrumentation.finish(Instrumentation.java:197) 
     at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:575) 
     at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1837) 

Любая идея, почему ? Я использую Gradle через Android Studio, пробовал различные версии, вызывая его непосредственно через adb, даже без какой-либо внешней зависимости (и, очевидно, с хотя бы SDK 18) ... Всегда сбой.

Это единственный официальный пример, который я нашел: https://www.youtube.com/watch?v=_SlBHUW0ybM

ответ

19

Это не ответ, почему UIAutomator не поймать ошибку, но, скорее, можно обойти, что я нашел. Когда доступны службы доступности, я не могу получить дамп UIAutomator, потому что получаю описанную вами ошибку. Когда я выключаю TalkBack и/или Switch Access в настройках доступности, я больше не получаю ошибку отказа в разрешении и свалка UIAutomator работает успешно. Не уверен, что это поможет вам, но я могу воспроизвести вашу проблему каждый раз, когда службы доступности включены в Lollipop (Nexus 5).

+0

О человек, если это работает, я никогда не буду вас отблагодарить! – Takhion

+6

Для меня был LastPass. –

+0

@JakeWharton У вас была эта проблема с LastPass - как вы поняли, что это LastPass и что вы сделали, чтобы исправить? У меня есть TalkBack и Switch Access, и я все еще получаю эту ошибку на Android 6.0, но не на 5.1.1. –

0

Использование InstrumentationRegistry.getTargetContext() вместо InstrumentationRegistry.getContext()

 Смежные вопросы

  • Нет связанных вопросов^_^