Android Studio: проблемы с WebView.onCreateInputConnection - PullRequest
0 голосов
/ 18 марта 2019

Я написал веб-приложение для некоторых устройств Android 4.2 с пользовательской клавиатурой приложения. На самом деле приложение работает без ошибок на устройствах с Android 4.2.

Я знаю, что это очень старая версия для Android, поэтому я приобрел новое устройство с Android 7.1.2, но, к сожалению, приложение не работает на этом устройстве.

В следующем примере кода я создаю InputConnection для WebView и предполагаю, что это ссылка на мою пользовательскую клавиатуру. Это код, который превращается в ошибку:

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

Код "setInputConnection" объекта "MyKeyboard"

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

сообщение об ошибке:

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.aaa.bbb, PID: 5012 java.lang.RuntimeException: Невозможно начать действие на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2666) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2727) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1478) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java:6123) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779) Вызывается: java.lang.IllegalStateException: ic не должен быть нулевым в com.example.huf.ifsscan.MainActivity.onCreate (MainActivity.kt: 59) на android.app.Activity.performCreate (Activity.java:6723) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1119) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2619) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2727) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1478) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java:6123) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779) E / libEGL: validate_display: 99 ошибка 3008 (EGL_BAD_DISPLAY)

В настоящее время я понятия не имею, почему это происходит. Документация для onCreateInputConnection объекта WebView показывает, что все должно быть в порядке.

Разработчики Android | Webview

Нет ничего другого, если я скомпилирую его под API 19 (Android 4.2) или API 25 (7.1).

Кто-нибудь знает, какие могут быть проблемы?

Заранее спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Кажется, я нашел проблему.

В приложении для Android 4.2 приведенный выше код получения и предположения inputConnection был частью функции "onCreate". Кажется, что Android 7.1 работает там немного по-другому, после того как я переместил указанную часть кода в функцию «onPageFinished», она работает нормально.

Полагаю, в функции onCreate отсутствует ссылка. Но я нахожу странным, что это работало раньше.

...