当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现微信分享带有缩略图的网页

Android实现微信分享带有缩略图的网页

2019年07月24日  | 移动技术网IT编程  | 我要评论

吉它谱,爱客宝,郭芯其个人资料

前言

最近做了一个web app 需要做微信分享。

需求是分享web页还要带有图片,并且图片还不是本地的,这就有点坑了,

也就是说图片还要从网络实时获取并且是同步的,如果是异步的还需要等待(用户体验就不好了)

代码如下

/** 
 * 微信分享 好友 
 */ 
 public void wxhyshare(string shareurl, string title, string image, string desc) { 
   iwxapi api = wxapifactory.createwxapi(context, constant.wx_app_id); 
 
   wxwebpageobject webpage = new wxwebpageobject(); 
   webpage.webpageurl = shareurl; 
   wxmediamessage msg = new wxmediamessage(webpage); 
   //msg.title = context.getstring(r.string.app_name); 
   msg.title = title; 
   msg.description = desc; 
   //图片加载是使用的imageloader.loadimagesync() 同步方法 
   //并且还要创建图片的缩略图,因为微信限制了图片的大小 
   bitmap thumbbmp = bitmap.createscaledbitmap(imageloaderutil.getbitmap(image), 200, 200, true); 
   msg.setthumbimage(thumbbmp); 
   thumbbmp.recycle(); 
   sendmessagetowx.req req = new sendmessagetowx.req(); 
   req.transaction = string.valueof(system.currenttimemillis()); // transaction字段用于唯一标识一个请求 
   req.message = msg; 
   //好友 
   req.scene = sendmessagetowx.req.wxscenesession; 
   // 调用api接口发送数据到微信 
   boolean result = api.sendreq(req); 
   logutil.d(tag, result + ""); 
 } 

代码分析

根据业务需求加载网络图片,并且还是要同步加载,所以我使用了imageloader。

加载图片代码如下:

/** 
 * 获取bitmap 
 * @param imageurl 
 * @return 
 */ 
public static bitmap getbitmap(string imageurl) { 
  displayimageoptions options = new displayimageoptions.builder() 
      .cacheinmemory(true) 
      .cacheondisk(true) 
      .build(); 
  return imageloader.getinstance().loadimagesync(imageurl, options); 
} 

loadimagesync是同步加载方法,相应还有异步加载方法。

由于微信对分享图片的大小做了限制,所以我们还要创建缩略图,否则会报错(checkargs fail, thumbdata is invalid)

微信检查参数的源码如下

if(this.gettype() == 8 && (this.thumbdata == null || this.thumbdata.length == 0)) { 
  log.e("micromsg.sdk.wxmediamessage", "checkargs fail, thumbdata should not be null when send emoji"); 
  return false; 
} else if(this.thumbdata != null && this.thumbdata.length > '耀') { 
  log.e("micromsg.sdk.wxmediamessage", "checkargs fail, thumbdata is invalid"); 
  return false; 

创建缩略图代码如下:

bitmap thumbbmp = bitmap.createscaledbitmap(imageloaderutil.getbitmap(image), 200, 200, true); 

以上所述是小编给大家介绍的android实现微信分享带有缩略图的网页,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网