javascript - WebView + addJavascriptInterface + javascript = 问题,webcore 崩溃

标签 javascript android webview

我使用 WebView + addJavascriptInterface 从 WebView 控件中显示的 html 页面控制我的应用程序。 它在某些 API 版本上工作正常,但例如在模拟器中的 API 10 上,它的行为错误,在 WebViewCoreThread 中看到崩溃。一些真实设备上的用户也报告了这一情况。

我的 html 看起来像这样:

<html>
<head>
<script type="text/javascript">
function hideId(id){
   callback.hide(id);
}
</script>
</head>
<body>
  <input type="button" value="Hide" onclick="hideId('1');">
</body>
</html>

这显示了一个隐藏按钮,它应该回调我的 Java 代码,如下所示:

private class JS{
   public void hide(String id){
      ... some code
   }
}

WebView wv = ...
wv.addJavascriptInterface(new JS(), "callback");
wv.loadURL(...);

它在某些设备上工作正常,但在提到的 API10 模拟器上,按下 html 中的按钮后,logcat 显示错误,整个 WebView 变得不适,没有更多控件对触摸使用react,并且我的 JS.hide 函数没有被调用。

W/dalvikvm(1790): JNI WARNING: jarray 0xb6e1bfd0 points to non-array object (Ljava/lang/String;)
I/dalvikvm(1790): "WebViewCoreThread" prio=5 tid=10 NATIVE
I/dalvikvm(1790):   | group="main" sCount=0 dsCount=0 obj=0xb6e4f8a0 self=0x8a9c568
I/dalvikvm(1790):   | sysTid=1800 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=145332280
I/dalvikvm(1790):   at android.webkit.WebViewCore.nativeTouchUp(Native Method)
I/dalvikvm(1790):   at android.webkit.WebViewCore.nativeTouchUp(Native Method)
I/dalvikvm(1790):   at android.webkit.WebViewCore.access$3300(WebViewCore.java:53)
I/dalvikvm(1790):   at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1158)
I/dalvikvm(1790):   at android.os.Handler.dispatchMessage(Handler.java:99)
I/dalvikvm(1790):   at android.os.Looper.loop(Looper.java:130)
I/dalvikvm(1790):   at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
I/dalvikvm(1790):   at java.lang.Thread.run(Thread.java:1019)
E/dalvikvm(1790): VM aborting

知道这有什么问题吗?

最佳答案

我自己也遇到了这个问题,我发现这是 android 2.3 的一个已知问题。 http://code.google.com/p/android/issues/detail?id=12987

关于javascript - WebView + addJavascriptInterface + javascript = 问题,webcore 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765598/

相关文章:

javascript - 为什么我的项目没有在 React 中排序(重新渲染)?

asp.net - 如何将值从 .aspx 页面发送到 JavaScript 文件?

javascript - 如何使用 Android 作为客户端访问 express.js/passport.js API?

android - 如何拦截android中的webview响应

Android WebView 安全字体系列?

javascript - Angular 1.5。如何使嵌入的模板绑定(bind)到组件范围

javascript - D3js v4。如何确定自定义事件?

java - Integer.parseInt 返回错误 : The method parseInt(String) in the type Integer is not applicable for the arguments (R. 字符串)

Android - 返回相对于 Firebase 的 boolean 值

ios - Webview 的本地文件路径