我用的WebView + addJavascriptInterface控制從一個WebView控件顯示HTML頁面我的應用程序。 它可以在一些API版本上正常工作,但是例如在模擬器中的API 10中它表現錯誤,崩潰在中可見WebViewCoreThread。也由用戶在一些真實設備上報告。的WebView + addJavascriptInterface + JavaScript的問題=,WebCore的崩潰
我的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變得生病,沒有更多的控件對觸摸做出反應,並且我的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
任何想法這是什麼問題?
它確實看起來不錯。這與我在書中使用的一些示例不同,如:https://github.com/commonsguy/cw-advandroid/tree/master/WebView/GeoWeb1 – CommonsWare