欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-11 23:48:28
前言 最近做了一个web app 需要做微信分享。 需求是分享web页还要带有图片,并且图片还不是本地的,这就有点坑了, 也就是说图片还要从网络实时获取并且是同步的,...

前言

最近做了一个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实现微信分享带有缩略图的网页,希望对大家有所帮助