了解Android微信里的WebView是如何实现分享的功能

了解Android微信里的WebView是如何实现分享的功能

本文是通过一些技巧,使用javascriptandroid webview之间的通讯,去获得微信公众号文章的分享标题与图片链接等信息。目的是模仿微信的浏览器是如何获取内容去进行分享,从而将这种技术引入到自己的项目中。而微信浏览器里,读取分享内容有两种方式,一种是通过读取网页的标题与首张图片链接作为分享的内容;另一种是公众号后台生成的文章与授权第三方网站使用js-sdk的去自定义分享内容。

先对比两种分享的效果

了解Android微信里的WebView是如何实现分享的功能_第1张图片
区别还是挺大的,要做更好的用户体验,就需要有耐心去突破。

普通网页抓取的分享内容

换取标题,这个比较简单,webview.getTitle()

而读取首张图片地址,简单方式可以在WebViewClient里覆写onLoadResource方法,然后判断是否为图片的链接,如下

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
    //读取加载中的资源里的图片
    if(cacheFirstLoadImageUrl == null && !TextUtils.isEmpty(url)) {
        if(url.contains(".png") || url.contains(".jpg")) {
            cacheFirstLoadImageUrl = url;
        }
    }
}

当然,如果网页没有图片,则可以用网页的favicon,webview.getFavicon()

抓取微信公众号文章的分享内容

在微信公众号的后台,有一个素材管理,可以通过它里面的文章编辑器来编写或修改文章,然后保存发布后,会固定生成一个链接。而文章链接是会以固定的host地址mp.weixin.qq.com进行发布,如下:

http://mp.weixin.qq.com/s?__biz=MzA5MTA2MzkyOQ==&mid=257050763&idx=1&sn=6984b946e5fd618a5f42e071d1729a7a&scene=0#rd

然后分析网页源码,在底部可以发现如下javascript代码:


                    
                    

你可能感兴趣的:(Android)