KaK*_*aKa 3 javascript java android webview
这是我的HTML页面代码:
<script>
function native_callback() {
alert("Test")
}
</script>
<button onclick='native.appVersion()'>appVersion</button>
Run Code Online (Sandbox Code Playgroud)
如您所见,只有一个按钮,当我单击按钮时,它将调用@JavascriptInterface方法appVersion().我想要做的是native_callback()在appVersion()方法中调用javascript函数.不幸的是,我会抓住一个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()");
}
}
Run Code Online (Sandbox Code Playgroud)
而且,我可以从网页上捕获异常:
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>.
顺便说一下,鳕鱼Log.i("JsInterface","Called!")已被召唤,我可以看到日志.
我该怎么办 ?
解决方案 实际上,它必须在另一个线程中调用,但与WebView对象相同.这是我的代码:
web_view.post(new Runnable() {
@Override
public void run() {
web_view.loadUrl("javascript:native_callback()");
}
});
Run Code Online (Sandbox Code Playgroud)
小智 6
如何使用处理程序?我检查它在我的项目中运作良好.
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadUrl("javascript:native_callback()");
}
}, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5575 次 |
| 最近记录: |