2014-11-25 6 views
10

Immer wenn ich versuche UiAutomation in jedem Test durch getInstrumentation().getUiAutomation() zu verwenden, stürzt der Prozess mit dieser Ausnahme:java.lang.SecurityException: Permission Denial: getIntentSender(), wenn UIAutomation in einem Test mit

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) 

Jede Idee, warum ? Ich benutze Gradle über Android Studio, habe verschiedene Versionen ausprobiert, habe es direkt durch adb aufgerufen, sogar ohne externe Abhängigkeit (und natürlich mit mindestens SDK 18) ... stürzt immer ab.

Dies ist das einzige offizielle Beispiel, das ich gefunden habe: https://www.youtube.com/watch?v=_SlBHUW0ybM

Antwort

19

Dies ist keine Antwort, warum UIAutomator nicht den Fehler zu kontrollieren, sondern eine mögliche Abhilfe, die ich gefunden. Wenn die Barrierefreiheitsdienste aktiviert sind, kann ich keinen UIAutomator-Dump abrufen, da ich den von Ihnen beschriebenen Fehler erhalte. Wenn ich TalkBack und/oder den Access-Schalter in den Eingabehilfen-Einstellungen abstelle, erhalte ich den Berechtigungsverweigerungsfehler nicht mehr und der UIAutomator-Dump funktioniert erfolgreich. Ich bin mir nicht sicher, ob Ihnen das weiterhilft, aber ich kann Ihr Problem jedes Mal reproduzieren, wenn die Barrierefreiheit in Lollipop aktiviert ist (Nexus 5).

+0

Oh man, ob das funktioniert werde ich danke nie genug! – Takhion

+6

Für mich ist LastPass. –

+0

@JakeWharton Sie hatten dieses Problem mit LastPass - wie haben Sie herausgefunden, dass es LastPass war und was haben Sie getan, um es zu reparieren? Ich habe TalkBack und Switch Access deaktiviert, und ich erhalte immer noch diesen Fehler auf Android 6.0, aber nicht auf 5.1.1. –

0

Verwenden InstrumentationRegistry.getTargetContext() statt InstrumentationRegistry.getContext()