最近项目中做到分享做到分享的时候发现微博,微信Demo只提供分享本地图片的方式,作为一个老司机怎么能忍,果断祭出我的神器万能的姑姑大神,最终功夫不负有心人完美实现分享。
对比微博微信分享网页这一块你会神器的发现二者居然惊人的相似,这里我也不管谁抄袭谁了,老规矩直接上代码,微信分享如下:
/**
* 初始化WXWebpageObject对象填充url
*/
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = shareUrl;
/**
* 用WXWebpageobject对象初始化一个WXMediaMessage对象,填写标题,描述
*/
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = title;
msg.description = description;
msg.thumbData = WX_Util.bmpToByteArray(bitmap, true);
/**
* 构造一个req
*/
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
不难发现最重要的还是得造一个bitmap,于是我们就造一个
/**
* 把网络资源图片转化成bitmap
*
* @param url 网络资源图片
* @return Bitmap
*/
public static Bitmap GetLocalOrNetBitmap(String url) {
Bitmap bitmap = null;
InputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new URL(url).openStream(), 1024);
final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
out = new BufferedOutputStream(dataStream, 1024);
copy(in, out);
out.flush();
byte[] data = dataStream.toByteArray();
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
data = null;
return bitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private static void copy(InputStream in, OutputStream out)
throws IOException {
byte[] b = new byte[1024];
int read;
while ((read = in.read(b)) != -1) {
out.write(b, 0, read);
}
}
这样就根据网络图片url就完美的得到bitmap了,是不是感觉很简单,在使用过程中遇到问题欢迎留言。