android 使用webview 与html通信_仰望星空的博客-CSDN博客_android webview 通信

WebView  webView = new WebView(this);        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);        webView.setLayoutParams(layoutParams);        webView.setWebViewClient(new WebViewClient());        webView.loadUrl("file:///android_asset/index.html");        //设置js调用的 java方法        webView.addJavascriptInterface(new JavaScriptInterfaces(), "myObj");        WebSettings settings = webView.getSettings();        //设置属性可执行 Javascript        settings.setJavaScriptEnabled(true);       // settings.setJavaScriptCanOpenWindowsAutomatically(true);        //设置可访问文件        //settings.setAllowFileAccess(true);        //设置支持缩放        //settings.setBuiltInZoomControls(true);        setContentView(webView);

初始化webview  设置可执行 js文件

js调用android 代码

webView.addJavascriptInterface(new JavaScriptInterfaces(), "myObj");//  myObj 为在js中使用的对象名称 JavaScriptInterfaces 是我们自定义的一个类
class JavaScriptInterfaces {        JavaScriptInterfaces() {        }         @JavascriptInterface        public void toNews(long newsId, String accessUrl) {            Log.e("Test", "toNews: newsId=" + newsId + " accessUrl=" + accessUrl);            Toast.makeText(MainActivity.this, "newsId=" + newsId + " accessUrl=" + accessUrl, Toast.LENGTH_SHORT).show();        }    }

在页面中直接使用 

myObj.toNews(11,"弹窗显示回调成功了~~~");  即可调用成功

android 调用js方法

无返回值调用

webView.loadUrl(String.format("javascript:callH5(11111)"));  //这样即可调用  注意在传递 string类型字符是应为webView.loadUrl(String.format("javascript:callH5Re('测试数据')"));

有返回值调用

webView.evaluateJavascript(String.format("javascript:callH5Re('测试数据')"), new ValueCallback<String>() {    @Override    public void onReceiveValue(String value) {        Log.e("Test", "onReceiveValue: "+value );    }});

html页面代码

<!DOCTYPE html><html>    <head>        <meta charset="utf-8" />        <title>Android and html</title>    </head>    <body>        <div id="result" align="center" onclick="myOnclick();">暂无数据</div>    </body>    <script>        //定义本地方法 效果提供给Android端调用 被调用后将获得参数值        function callH5(data) {            document.getElementById("result").innerHTML = "result success for Android to:" + data;        }         //定义本地方法 效果提供给Android端调用 被调用后将获得参数值        function callH5Re(data) {            //document.getElementById("result").innerHTML = "result success for Android to:" + data;            return "你好啊";        }          //定义本地点击事件 效果调用Android方法 传递参数给Android客服端        function myOnclick() {            document.getElementById("result").innerHTML = "按钮被点击了"            //调用android本地方法 调用对象由Android定义实例化,调用方法由Android提供 (具体对象名和方法待定,可变更)            myObj.toNews(11,"弹窗显示回调成功了~~~");        }    </script></html>

项目源码:https://download.csdn.net/download/ljq869115191/11107250   

csdn 强行积分


原网址: 访问
创建于: 2021-09-16 15:16:29
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论