0

我为一些带有自定义 inapp 键盘的 Android 4.2 设备编写了一个 webview 应用程序。事实上,该应用程序在运行 Android 4.2 的设备上运行时没有任何错误。

我知道这是一个非常旧的 android 版本,这就是为什么我现在有了 Android 7.1.2 的新设备的原因,但不幸的是,该应用程序无法在此设备上运行。

在下面的代码示例中,我创建了一个到 WebView 的 InputConnection,并假定它引用了我的自定义键盘。这是变成错误的代码:

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

对象“MyKeyboard”的“setInputConnection”代码

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

错误信息:

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:在 android.app.ActivityThread 的 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 的 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) 中,ic 不能为空。 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(Native Method) 在 com。android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 引起:java.lang.IllegalStateException: ic 一定不能null 在 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(Native Method) 在 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)

目前我不知道为什么会这样。WebView 对象的“onCreateInputConnection”文档显示它应该没问题。

安卓开发者 | 网页浏览

如果我在 API 19 (Android 4.2) 或 API 25 (7.1) 下编译它没有什么不同。

有谁知道问题可能是什么?

提前致谢

4

1 回答 1

0

好像我发现了问题。

在 Android 4.2 的应用程序中,上述获取和假设 inputConnection 的代码是“onCreate”函数的一部分。它看起来像 Android 7.1 在那里工作有点不同,在我将指定的代码部分移动到“onPageFinished”函数之后,它工作正常。

我想 onCreate 函数中缺少一个引用。但我觉得奇怪的是它以前有效。

于 2019-03-19T06:28:10.060 回答