Window Manager when sending Down key to Samsung Galaxy S


I am running Unit tests on various Android devices using Instrumentation . Tests work great on the emulator and on all devices except the Samsung Galaxy S. On Samsung Galaxy S, it displays a crash after entering several 30 key events using the toolkit - this is a complete crash log:

D/dalvikvm(11862): GC_EXPLICIT freed 6800 objects / 374040 bytes in 54ms D/dalvikvm(11862): GC_EXPLICIT freed 780 objects / 71856 bytes in 39ms W/dalvikvm(11862): threadid=9: thread exiting with uncaught exception (group=0x4001d7d0) E/WindowManager( 2472): Window Manager Crash E/WindowManager( 2472): java.lang.NullPointerException E/WindowManager( 2472): at com.android.server.WindowManagerService$KeyWaiter.waitForNextEventTarget(WindowManagerService.java:5844) E/WindowManager( 2472): at com.android.server.WindowManagerService.injectKeyEvent(WindowManagerService.java:5565) E/WindowManager( 2472): at android.view.IWindowManager$Stub.onTransact(IWindowManager.java:110) E/WindowManager( 2472): at com.android.server.WindowManagerService.onTransact(WindowManagerService.java:692) E/WindowManager( 2472): at android.os.Binder.execTransact(Binder.java:288) E/WindowManager( 2472): at dalvik.system.NativeStart.run(Native Method) E/AndroidRuntime(11862): FATAL EXCEPTION: Instr: com.myapp.test.ImpInstrumentation E/AndroidRuntime(11862): java.lang.NullPointerException E/AndroidRuntime(11862): at android.os.Parcel.readException(Parcel.java:1266) E/AndroidRuntime(11862): at android.os.Parcel.readException(Parcel.java:1248) E/AndroidRuntime(11862): at android.view.IWindowManager$Stub$Proxy.injectKeyEvent(IWindowManager.java:830) E/AndroidRuntime(11862): at android.app.Instrumentation.sendKeySync(Instrumentation.java:859) E/AndroidRuntime(11862): at android.app.Instrumentation.sendKeyDownUpSync(Instrumentation.java:872) E/AndroidRuntime(11862): at com.myapp.test.util.ListUtil.<b>arrowDownToPosition</b>(ListUtil.java:69) 

And here is a piece of code where it usually crashes:

  private void arrowDownToPosition(int position) { int maxDowns = 50; while(mListView.getSelectedItemPosition() < position && --maxDowns > 0) { mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); } //Crashes on below line dispatching enter key mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER); } 

All solutions / suggestions are welcome.

+6
source share
2 answers

Not sure if this helps, but by briefly exploring this issue, I found this source . Take a look, in particular, at line 175 about the error with DPAD_CENTER on Galaxy S and how to solve the problem.

0
source

depending on your stacktrace, it seems your mInstrumentation variable is null. did you forget to initialize it?

try the following:

 while(mInstrumentation!=null && mListView.getSelectedItemPosition()>-1) { mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); } 
-1
source

Source: https://habr.com/ru/post/907371/


All Articles