安卓4.4以前不能直接呼叫js獲取返回值,解決方法
阿新 • • 發佈:2019-02-17
安卓4.4以前用類似這種呼叫js獲得返回資料
webView.evaluateJavascript("getGreetings()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.i(LOGTAG, "onReceiveValue value=" + value);
}});
會報找不到這個方法的錯誤
在網上查了一些資料,可以通過呼叫js,然後js再呼叫java方法間接的獲得值
myWebView.addJavascriptInterface(new JsInteration(), "control"); control為js呼叫java的入口?我也不知道確切意思,知道幹嘛用的就行。JsIntertion為一個類
Class JsIntertion{
@JavascriptInterface
public void toastMessage(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}
}
網頁程式碼
<html> <script type="text/javascript"> function sayHello() { alert("Hello") } function alertMessage(message) { alert(message) } function toastMessage(message) { window.control.toastMessage(message) } function sumToJava(number1, number2){ window.control.onSumResult(number1 + number2) } </script> Java-Javascript Interaction In Android </html>
呼叫的話就webView.loadUrl("javascript:alertMessage(\"" + "content" + "\")");
最後會走java中自定義類中的函式。