引言:最近项目中要用到WebView加载服务器端的富文本中的内容,富文本中的内容主要是文字+图片,我们有个需求是将富文本中的图片下载到本地。
1、服务器端接口中的content(富文本)内容是:
"content": "<p class=\"ql-align-justify\"><span class=\"ql-size-large\">弄堂,即小巷,是上海和江浙地区特有的民居形式,它是由连排的老房子(包括石库门)所构成的,并与石库门建筑有着密切的关系。它代表近代上海城市文化的特征,创造了形形色色风情独具的弄堂文化。弄堂的行行种种、弄堂的性感、弄堂的感动,它已经成为上海城市的华丽的背景色。弄堂作为休闲娱乐、儿童活动、交易等活动的场所。弄堂可分为广式里弄、新式石库门里弄 、新式里弄、花园式里弄等形式。</span></p><p class=\"ql-align-justify\"><br></p><p class=\"ql-align-center\"><span class=\"ql-size-large\"><img src=\"http://img.xdnphb.com/genus/upload/editor/photo/2018/07/23/e3afeff5-4477-4c93-810a-245cb0e4bea7.jpg\"></span></p><p class=\"ql-align-justify\"><br></p><p class=\"ql-align-justify\"><span class=\"ql-size-large\">近代上海地方文化最重要的组成部分弄堂(lòng táng),这一民居形式,曾经与千千万万上海市民的生活密不可分。多少个故事,多少个典故,多少个名人,多少个记忆,与石库门,与亭子间紧紧地联系在一起。可以说,没有弄堂,就没有上海,更没有上海人。弄堂,构成了近代上海城市最重要的建筑特色;弄堂构成了千万普通上海人最常见的生活空间;弄堂,构成了近代上海地方文化的最重要的组成部份。</span></p><p class=\"ql-align-justify\"><br></p><p class=\"ql-align-center\"><span class=\"ql-size-large\"><img src=\"http://img.xdnphb.com/genus/upload/editor/photo/2018/07/23/fcab154d-b7a3-49e1-86af-ac20105d127b.jpg\"></span></p><p><br></p><p class=\"ql-align-justify\"><span class=\"ql-size-large\">它最能代表近代上海城市文化的特征,它也是近代上海历史的最直接产物。</span></p><p><br></p><p class=\"ql-align-justify\"><span class=\"ql-size-large\">上海人往昔的居住生活中离不开弄堂。所谓“弄堂”,是上海人对于里弄的俗称,它是由连排的石库门建筑所构成的,并与石库门建筑有着密切的关系。多少年来,大多数上海人就是穿梭在这些狭窄而悠长的弄堂里,也度过了他们漫长的人生,并且创造了形形色色风情独具的弄堂文化。</span></p><p class=\"ql-align-justify\"><br></p><p>来源:百度百科</p><p><br></p>"
2、接下来就是怎样获取content字段中的图片链接,也就是获取:(有几个获取几个)
http://img.xdnphb.com/genus/upload/editor/photo/2018/07/23/e3afeff5-4477-4c93-810a-245cb0e4bea7.jpg
一种方式是:通过字符串截取,不过这中方式太麻烦了。
3、百度搜索一篇文章中有个方法记录下,很适用
/**
* 截取富文本中的图片链接
* @param content
* @return
*/
public static String[] returnImageUrlsFromHtml(String content) {
List<String> imageSrcList = new ArrayList<String>();
String htmlCode = content;
Pattern p = Pattern.compile("<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic|\\b)\\b)[^>]*>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(htmlCode);
String quote = null;
String src = null;
while (m.find()) {
quote = m.group(1);
src = (quote == null || quote.trim().length() == 0) ? m.group(2).split("//s+")[0] : m.group(2);
imageSrcList.add(src);
}
if (imageSrcList == null || imageSrcList.size() == 0) {
//Log.e("huangxiaoguo", "资讯中未匹配到图片链接");
LogUtils.e("详情中未匹配到图片链接!!!");
return null;
}
return imageSrcList.toArray(new String[imageSrcList.size()]);
}
4、调用
@Override
public void initView(View view) {
mCityDetailWebview= (WebView) findViewById(R.id.city_detail_webview);
//获取从城市文章中传过来的城市内容
Intent intent=getActivity().getIntent();
String cityContent= intent.getStringExtra(Constants.CITY_CONTENT);
mCityDetailWebview.getSettings().setJavaScriptEnabled(true);//启用js
mCityDetailWebview.getSettings().setBlockNetworkImage(false);//解决图片不显示
mCityDetailWebview.getSettings().setUseWideViewPort(true);
mCityDetailWebview.getSettings().setLoadWithOverviewMode(true);//设置webview加载页面的模式,页面自适应手机屏幕的分辨率
//手动截取
// if(cityContent.contains("img")){
// String first=cityContent.substring(0,cityContent.indexOf("/"));
// String second = "http:"+cityContent.substring(cityContent.indexOf("/"), cityContent.lastIndexOf("."));
// String third=cityContent.substring(cityContent.lastIndexOf("."),cityContent.length());
// String url=first+second+third;
// content = HTMLFormatUtils.getNewContent(url);
// LogUtils.e("城市==","11111"+first+"22222"+second+"33333"+third+"CityCityCityCityCity");
// }else{
// content=HTMLFormatUtils.getNewContent(cityContent);
// }
// if (!TextUtils.isEmpty(content)) {
// mCityDetailWebview.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
// }
> //通过上边的方法截取(有几个截取几个)
>
> String[] imageUrls=returnImageUrlsFromHtml(cityContent);
> for(int i=0;i<imageUrls.length;i++){
> LogUtils.e("获取到的图片链接分别是:"+imageUrls[0]+"1111"+imageUrls[1]+"22222"+imageUrls[2]+"333333");
>
> }
LogUtils.e(imageUrls.toString()+"!!!!"+imageUrls.length);
}
5、总结
调用下那个方法就可以获取到图片地址了
参考文章链接:https://blog.csdn.net/huangxiaoguo1/article/details/78422526