webview 获取html数据和js的传值
来源:互联网 发布:中文域名管理中心 编辑:程序博客网 时间:2024/06/05 14:35
最近做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。
于是,总结了2种通过webview获取网页上的数据的方式:
第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。
class MyJavaScriptInterface { MyJavaScriptInterface() { } /** * js调java,显示图片 * * @param imgUrls */ @JavascriptInterface public void showImages(String[] imgUrls) { LogUtils.i(TAG, "imgUrls = " + imgUrls[0]); NewsDetailWebviewActivity.this.imgUrls = imgUrls; }}...webView.addJavascriptInterface(new MyJavaScriptInterface(), "faxun");
第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。
class MyWebClient extends WebViewClient {@Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.getShareData.OnGetShareData(" + "document.querySelector('meta[name=\"reply_info\"]').getAttribute('content')" + ");"); super.onPageFinished(view, url); }}private class GetShareDataInterface { @JavascriptInterface public void OnGetShareData(String shareData) { if (null != shareData) { try { JSONObject shareJson = new JSONObject(shareData); title = shareJson.optString("title"); description = shareJson.optString("description"); imageUrl = shareJson.optString("imageUrl"); } catch (JSONException e) { e.printStackTrace(); } } } }.....webView.setWebViewClient(new MyWebClient());
其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等
0 0
- webview 获取html数据和js的传值
- webview 获取html数据和js的传值
- webview与js交互、webview返回上一层html、webview获取html的title、加载assets下的html文件
- 如何获取WebView的url和title和html
- iOS-获取webview的 url 和 title 和 html
- iOS-获取webview的 url 和 title 和 html
- ios webview 获取 网页的URL、title和HTML
- Android WebView 获取网页数据(html)
- Android WebView 获取网页数据(html)
- Android WebView 获取网页数据(html)
- android中webView和html中js的交互
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:*
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- css 创建水平导航条
- 检查宿舍卫生
- Android meta-data 参数的获取
- 《从零开始学Swift》学习笔记(Day 36)——静态方法
- centos下安装jdk/tomcat/mysql
- webview 获取html数据和js的传值
- Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
- Struts学习(一)
- 《拓扑排序》hdu acm 5.2.5 set map
- maven 打包时动态替换properties资源文件中的配置值
- qemu-system-x86_64新建虚拟机,键盘输入乱码
- 自卑造成抑郁性失眠该怎么办
- 零长度数组
- Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”