Android调用H5的方法.Js交互
16lz
2021-01-26
1.概述
在安卓开发中, 内嵌H5的页面的情况越来越多, 很多时候我们需要和H5进行相互调用, 比如H5调用安卓的方法 打开应用市场 等等 安卓调用H5的方法 获取网页传递的数据 等等 。交互其实是很简单的的一个问题,下面将简单的介绍Android和网页的相互调用和Js的交互
2.js互调
我现在有个需求就是获取H5的方法输出的数据 网页代码如下
如上所示, 我们需要获取到网页该方法给我提供的数据
Android端代码如下
private void initView() { webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setDomStorageEnabled(true); //设置WebView属性,能够执行Javascript脚本 webSettings.setJavaScriptEnabled(true); //设置可以访问文件 webSettings.setAllowFileAccess(true); //设置Web视图 webView.setWebViewClient(new webViewClient()); // 支持js调用java jsInAndroid相当于和H5端定义的协议 webView.addJavascriptInterface(new JSInterface(), "jsInAndroid"); // 调用H5页面的方法 无参方法 getInfo方法名 webView.loadUrl("javascript:getInfo()"); //有参方法 // webView.loadUrl("javascript:getInfo("+"'参数'"+")"); findViewById(R.id.conversation_back).setOnClickListener(new View.OnClickListener() { public void onClick(View view) { if (webView.canGoBack()) { webView.goBack();//返回上一页面 } else { finish(); } } });}
class JSInterface { // info即H5的方法 name即H5返回的数据 @JavascriptInterface public String info(String name) { try { JSONObject object = new JSONObject(name); sharetitle = object.optString("title"); shareaddress = object.optString("shareurl"); sharepic = object.optString("pic"); sharecontent = object.optString("content"); } catch (JSONException e) { e.printStackTrace(); } return name; }}
private class webViewClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); String title = view.getTitle(); // 加载网页标题 if (!TextUtils.isEmpty(title)) { ((TextView) findViewById(R.id.conversation_title)).setText(title); } } // public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("launchagency")) { checkApkExist(); } else { view.loadUrl(url); } return true; }}
更多相关文章
- Android(安卓)View获取坐标值、相对距离的方法
- Android从驱动层到应用程序层的通信
- Android(安卓)Studio 和 Unity 之间实现代码交互aar模式
- Android(安卓)驱动和系统开发 2. 解析模拟器GPS模块 (原创)
- Android(安卓)5.0 Lollipop 短彩信接收流程
- Android设计模式2--工厂方法模式
- android 系统隐藏和显示虚拟按键的几种方法(不要太详细了)
- android调用webservice实现手机归属查询
- 基于jsBridge的NA与H5交互