【发布时间】:2016-09-14 07:32:39
【问题描述】:
这是我的 HTML 页面代码:
<script>
function native_callback() {
alert("Test")
}
</script>
<button onclick='native.appVersion()'>appVersion</button>
如您所见,只有一个按钮,当我单击该按钮时,它会调用@JavascriptInterface 方法appVersion()。我想做的是在appVersion()方法中调用javascript函数native_callback()。不幸的是,我会捕捉到一个 java 异常。
这是我的 WebView 类的 java 源代码的一部分:
... // some other codes that not related
getSettings().setJavaScriptEnabled(true);
addJavascriptInterface(new InJavaScriptLocalObj(), "native");
... // some other codes that not related
final class InJavaScriptLocalObj {
@JavascriptInterface
public void appVersion() {
Log.i("JsInterface","Called!")
loadUrl("javascript:native_callback()");
}
}
而且,我可以从网页中捕获异常:
Uncaught Error: Java exception was raised during method invocation -- From line 6 of http://my web page url
第 6 行是<button onclick='native.appVersion()'>appVersion</button>。
顺便说一句,cods Log.i("JsInterface","Called!") 已被调用,我可以看到日志。
我该怎么办?
解决方案 实际上,它必须在另一个线程中调用,但与您的 WebView 对象相同。 这是我的代码:
web_view.post(new Runnable() {
@Override
public void run() {
web_view.loadUrl("javascript:native_callback()");
}
});
【问题讨论】:
标签: javascript java android webview