Android Studio: Problems with WebView.onCreateInputConnection

802 Views Asked by At

I wrote a webview application for some Android 4.2 device with a custom inapp keyboard. In fact, the app runs without any error on devices with Android 4.2.

I know this is a very old android version, this is reason why I got now a new device with Android 7.1.2, but unfortunately, the app doesn't work on this device.

In the following code example I create an InputConnection to the WebView and assume that reference to my custom keyboard. This is the code who turns into an error:

   val ic = mWebView.onCreateInputConnection(EditorInfo())
    mMyKeyboard.setInputConnection(ic)

Code of "setInputConnection" of object "MyKeyboard"

  fun setInputConnection(ic: InputConnection) {
    inputConnection = ic
}

error message:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.aaa.bbb, PID: 5012 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.aaa.bbb/com.example.aaa.bbb.MainActivity}: java.lang.IllegalStateException: ic must not be null at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Caused by: java.lang.IllegalStateException: ic must not be null at com.example.huf.ifsscan.MainActivity.onCreate(MainActivity.kt:59) at android.app.Activity.performCreate(Activity.java:6723) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6123)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)  E/libEGL: validate_display:99 error 3008 (EGL_BAD_DISPLAY)

Currently I have no idea why this happens. The documentation for "onCreateInputConnection" of WebView object show it should be fine.

Android Developers | Webview

There is no different if I compile it under API 19 (Android 4.2) or API 25 (7.1).

Does anyone have any idea what the problems might be?

Thanks in advance

1

There are 1 best solutions below

0
On

It seems like I found the problem.

In the app for Android 4.2 the above code of getting and assuming the inputConnection was part of the "onCreate" function. It semms like Android 7.1 works there a little bit different, after I moved the specified code part to "onPageFinished" function, it works fine.

I guess there is a reference missing in the onCreate function. But I find it odd that it worked before.