michaelia/robotium

Injecting to another application requires INJECT_EVENT permission

Closed this issue · 8 comments

I get this error when running the test in the example:

java.lang.SecurityException: Injecting to another application requires 
INJECT_EVENT permission
at android.os.Parcel.readException(Parcel.java:1218)
at android.os.Parcel.readException(Parcel.java:1206)
at 
android.view.IWindowManager$Stub$Proxy.injectKeyEvent(IWindowManager.java:8
05)
at android.app.Instrumentation.sendKeySync(Instrumentation.java:859)
at android.app.Instrumentation.sendKeyDownUpSync(Instrumentation.java:871)
at com.jayway.android.robotium.solo.Solo.pressMenuItem(Solo.java:556)
at com.jayway.test.NotePadTest.testAddNote(NotePadTest.java:38)
at java.lang.reflect.Method.invokeNative(Native Method)
at 
android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java
:205)
at 
android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:1
95)
at 
android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentati
onTestCase2.java:175)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at 
android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.ja
va:430)
at 
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:
1447)

I tried adding the permission to the manifest file, but that did not help.

Original issue reported on code.google.com by jaglas...@gmail.com on 22 Feb 2010 at 7:31

The security exception that you get means that the test cases are trying to 
interact
with an application that they are not allowed to interact with (e.g. another
application or the platform). This tells me that Note pad does not start when 
your
test cases start to execute. One example when this can happen is when the 
emulators
lock screen is active. Then the test cases try to interact with the lock screen
instead and therefore a security exception is thrown. 

Can you please make sure that Note pad does indeed start when you select the 
example
test project and click run application as Android JUnit Test. If it does not 
start,
try to run Note pad separately by right clicking it and select run as Android
Application. If that is successfull then try to run the test cases again. 

If this does not work then please get back to me with more information and 
observations. 

Original comment by renasr...@gmail.com on 22 Feb 2010 at 4:58

Thanks for your quick reply. You were correct. This error is occurring because 
the
lock screen is active. If I unlock the emulator after it starts and then start 
the
test, it will run. 

Is there a solution so that I can run this as an automated test and not have to
manually go to the home screen?

Original comment by jaglass...@gmail.com on 22 Feb 2010 at 5:24

Sorry, the above reply is from jaglassjr. I was signed into another account.

Original comment by jaglas...@gmail.com on 22 Feb 2010 at 5:25

Once you have unlocked the emulator there is no need to go the home screen. Its 
just
the first time when you start the emulator that you need to unlock it. Im sure 
there
must be an adb command that you can send to the emulator in order to unlock it. 
Try
looking at different adb commands and see if you find one that suites your 
needs. 

Original comment by renasr...@gmail.com on 22 Feb 2010 at 6:49

  • Changed state: Invalid
U can do the following:

KeyguardManager km = 
      (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (km.inKeyguardRestrictedInputMode())
{
  KeyguardManager.KeyguardLock lock = km.newKeyguardLock("some_tag");
  lock.disableKeyguard();
  SystemClock.sleep(2000);
}

Original comment by magedark...@gmail.com on 13 Oct 2010 at 1:52

That's not a very good workaround; it requires adding that code to the 
application under test and adding the android.permission.DISABLE_KEYGUARD 
permission to your app.

This is described here: 
http://developer.android.com/intl/fr/guide/topics/testing/testing_android.html#U
nlockDevice

Perhaps this is also useful for automatically unlocking the emulator: 
http://bit.ly/cMrbEM

Original comment by chris@orr.me.uk on 13 Oct 2010 at 8:23

I am using SMS appliction in my project while testing through robotium when it 
goes into SMS app it is not coming back to my applicion......if anyone knows 
solution plz reply as soon as possible.  

Original comment by fassi404@gmail.com on 18 Nov 2010 at 4:35

I have the same problem but I try to test UI with robotium.
Also I build project with gradle. When I worked with eclipse/IDEA(without 
gradle) it worked fine.

Original comment by zamesIly...@gmail.com on 26 Feb 2014 at 9:10