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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章