Android实现微信分享带有缩略图的网页
前言
最近做了一个webapp需要做微信分享。
需求是分享web页还要带有图片,并且图片还不是本地的,这就有点坑了,
也就是说图片还要从网络实时获取并且是同步的,如果是异步的还需要等待(用户体验就不好了)
代码如下
/**
*微信分享好友
*/
publicvoidwxHyShare(StringshareUrl,Stringtitle,Stringimage,Stringdesc){
IWXAPIapi=WXAPIFactory.createWXAPI(context,Constant.Wx_APP_ID);
WXWebpageObjectwebPage=newWXWebpageObject();
webPage.webpageUrl=shareUrl;
WXMediaMessagemsg=newWXMediaMessage(webPage);
//msg.title=context.getString(R.string.app_name);
msg.title=title;
msg.description=desc;
//图片加载是使用的ImageLoader.loadImageSync()同步方法
//并且还要创建图片的缩略图,因为微信限制了图片的大小
BitmapthumbBmp=Bitmap.createScaledBitmap(ImageLoaderUtil.getBitmap(image),200,200,true);
msg.setThumbImage(thumbBmp);
thumbBmp.recycle();
SendMessageToWX.Reqreq=newSendMessageToWX.Req();
req.transaction=String.valueOf(System.currentTimeMillis());//transaction字段用于唯一标识一个请求
req.message=msg;
//好友
req.scene=SendMessageToWX.Req.WXSceneSession;
//调用api接口发送数据到微信
booleanresult=api.sendReq(req);
LogUtil.d(TAG,result+"");
}
代码分析
根据业务需求加载网络图片,并且还是要同步加载,所以我使用了ImageLoader。
加载图片代码如下:
/**
*获取bitmap
*@paramimageUrl
*@return
*/
publicstaticBitmapgetBitmap(StringimageUrl){
DisplayImageOptionsoptions=newDisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
returnImageLoader.getInstance().loadImageSync(imageUrl,options);
}
loadImageSync是同步加载方法,相应还有异步加载方法。
由于微信对分享图片的大小做了限制,所以我们还要创建缩略图,否则会报错(checkArgsfail,thumbDataisinvalid)
微信检查参数的源码如下
if(this.getType()==8&&(this.thumbData==null||this.thumbData.length==0)){
Log.e("MicroMsg.SDK.WXMediaMessage","checkArgsfail,thumbDatashouldnotbenullwhensendemoji");
returnfalse;
}elseif(this.thumbData!=null&&this.thumbData.length>'耀'){
Log.e("MicroMsg.SDK.WXMediaMessage","checkArgsfail,thumbDataisinvalid");
returnfalse;
创建缩略图代码如下:
BitmapthumbBmp=Bitmap.createScaledBitmap(ImageLoaderUtil.getBitmap(image),200,200,true);
以上所述是小编给大家介绍的Android实现微信分享带有缩略图的网页,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!