Android 和 HTML 页面交互

ε祈祈猫儿з 提交于 2020-01-20 01:00:45

参考链接:参考地址

一.WebView加载HTML页面

String urlLocal = "file:///android_asset/index.html";
String url = "https://www.baidu.com/";
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(urlLocak);//加载本地html文件或者网站url

本地文件index.html内容如下

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript">
    //2.2 无参,无返回值的方法
    function show() {
      document.getElementById("temp").innerHTML = "Hello world";
    }

    //2.3 有参,无返回值的方法
    function alertMsg(message) {
      alert(message);
    }

    //2.4 有返回值的方法
    function sum(i, j) {
      return i + j;
    }


  </script>

	
  <script type="text/javascript">
    //3 调用Android的方法
    function getMsg() {
      var result = window.H5Activity.back();
      document.getElementById("temp").innerHTML = result;
    }

  </script>

  <title>测试</title>
</head>
<body onLoad="init();">
<div id="temp">h5页面</div>
<button id="btn" onclick="getMsg()">按钮</button>
</body>
</html>

二.Android 调用 HTML 中的方法

2.1 webview添加对JavaScript支持

String urlLocal = "file:///android_asset/index.html";
String url = "https://www.baidu.com/";
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(urlLocal);
//支持js
webView.getSettings().setJavaScriptEnabled(true);
//支持弹窗
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }
});

2.2 调用HTML无参,无返回值的方法(直接调用)

//格式 "javascript:xxx()" 其中xxx为HTML页面里函数名
webView.loadUrl("javascript:show()");

2.3 调用HTML有参,无返回值的方法

//格式 "javascript:xxx(a)" 其中xxx为HTML页面里函数名 字符串用单引号
webView.loadUrl("javascript:alertMsg('这是有参数的')");
//参数为变量的时候用转义字符
String message = "变量参数";
webView.loadUrl("javascript:alertMsg(\"" + message + "\")");

2.4 调用HTML有返回值方法

webView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        T.showShort(H5Activity.this, "HTML页面返回结果是:" + value);
    }
});

三.HTML调用Android中的方法

调用的方法必须添加此注解@JavascriptInterface

//H5调用Android方法
@JavascriptInterface
public String testAndroid() {
    return "调用到了Android里的方法";
}

然后注册该方法,起名

//H5页面Android方法接口,html中调用使用别名
webView.addJavascriptInterface(this/*调用方法的类名*/, "H5Activity"/*别名*/);

最后在html中添加js代码,注意:html中js调用使用注册的别名

<script type="text/javascript">
function getMsg(){
    var result=window.H5Activity.testAndroid();
      document.getElementById("temp").innerHTML=result;
}
</script>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!