1. 程式人生 > >安卓4.4以前不能直接呼叫js獲取返回值,解決方法

安卓4.4以前不能直接呼叫js獲取返回值,解決方法

安卓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中自定義類中的函式。