2014-11-25 10 views
10

Ogni volta che provo a utilizzare UiAutomation in qualsiasi prova attraverso getInstrumentation().getUiAutomation(), il processo si blocca con questa eccezione:java.lang.SecurityException: Autorizzazione Denial: getIntentSender() quando si utilizza UIAutomation in un test

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) 

Qualsiasi idea del perché ? Sto usando Gradle tramite Android Studio, ho provato varie versioni, chiamandolo direttamente tramite adb, anche senza alcuna dipendenza esterna (e ovviamente con almeno SDK 18) ... Sempre in crash.

Questo è l'unico esempio ufficiale che ho trovato: https://www.youtube.com/watch?v=_SlBHUW0ybM

risposta

19

Questa non è una risposta per il motivo per cui non UIAutomator sta recuperando l'errore, ma piuttosto una possibile soluzione che ho trovato. Quando i servizi di accessibilità sono attivi, non riesco a ottenere un dump UIAutomator perché ricevo l'errore che hai descritto. Quando spengo TalkBack e/o Switch Access nelle impostazioni di accessibilità non riesco più a ottenere l'errore Denial of Permission e il dump di UIAutomator funziona correttamente. Non sono sicuro se questo ti sarà d'aiuto, ma posso riprodurre il problema ogni volta con i servizi di accessibilità ON in Lollipop (Nexus 5).

+0

Oh uomo, se funziona non sarò mai ringraziarvi abbastanza! – Takhion

+6

Per me è stato LastPass. –

+0

@JakeWharton Hai avuto questo problema con LastPass - come hai capito che era LastPass e cosa hai fatto per risolvere? Ho disattivato TalkBack e Switch Access e sto ancora ricevendo questo errore su Android 6.0 ma non su 5.1.1. –

0

Uso InstrumentationRegistry.getTargetContext() invece di InstrumentationRegistry.getContext()