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实现微信分享带有缩略图的网页,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!