這是我的HTML頁面代碼:如何在webView,Android中使用@JavascriptInterface方法調用Javascript?
<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>
。
順便說一句,鱈魚Log.i("JsInterface","Called!")
已被調用,我可以看到日誌。
我該怎麼辦?
解決方案 實際上,它必須在另一個線程中調用,但與您的WebView對象相同。 這是我的代碼:
web_view.post(new Runnable() {
@Override
public void run() {
web_view.loadUrl("javascript:native_callback()");
}
});
是的,你是對的。它必須是另一個線程,但與webView相同的線程。而我使用這些:'web_view.post(新的Runnable(){@Override 公共 無效的run(){ web_view.loadUrl( 「JavaScript的:native_callback()」);} });' – KaKa