android微信源生SDK分享问题
老生常谈了,不过还是记录一下这些坑比较合适!今天测试忽然发现,微信分享出去的条目,自身机子可以看到图片,而别人的手机上却发现缩略图没了,成为另一个链接黑图。这种问题自然是先考虑一下是否自身图片资源有啥问题,经过查看,图片并无毛病!因此只能另寻他法了。百度上很多答案大同小异,都说是图片太大(微信官方也指出:android分享图片不能大于32K),但是实际却是当图片大于32K,根本不能分享成功!因此这并不是我的问题原因!讲到这顺便附上分享图片时,对图片压缩处理的方法吧:
我们都知道微信源生分享的方法(带标题的链接)大致是这样的
//注意传入的数据不能大于10M,开发文档上写的
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "url";//链接地址
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "title";//标题
msg.description = "content";//内容、描述
//msg.mediaObject实际上是个IMediaObject对象,
//它有很多实现类,每一种实现类对应一种发送的信息,
//比如WXTextObject对应发送的信息是文字,想要发送文字直接传入WXTextObject对象就行
//官方文档介绍这个bitmap不能超过32kb,如果超过32kb则抛异常,分享失败
//如果一个像素是8bit的话换算成正方形的bitmap则边长不超过181像素,边长设置成150是比较保险的
//或者使用bmpToByteArray(thumbBitmap);省去自己转换二进制数据的过程
//在这设置缩略图
Bitmap thumb = BitmapFactory.decodeResource(m_Context.getResources(), R.drawable.icon);
//方法一:bmpToByteArray(Bmp,needrecycle)方法控制图片质量--压缩率、分辨率
// msg.thumbData = bmpToByteArray(thumb, true);
//方法二:msg.setThumbImage(Bmp)方法控制图片实际尺寸--宽高
Bitmap thumbBmp = Bitmap.createScaledBitmap(thumb, 100, 100, false);//API方法,自己点进去看100,100就是设置图片宽高的
msg.setThumbImage(thumbBmp);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession; //设置发送给朋友
// req.scene = SendMessageToWX.Req.WXSceneTimeline; //设置发送到朋友圈
msgApi.sendReq(req);
public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 90, output);//CompressFormat.JPEG是图片格式,也可以选择CompressFormat.PNG; 90是压缩率
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
好了,言归正传,再来说说分享以后为什么有的不能显示缩略图吧。。。原文在这!
经测试,发现title或者desc方案中不能携带“红包”或者“现金”等关键字!否则会被微信屏蔽!