Android webview 微信分享图片

        Webview 调用Android微信分享图片的方法原本的思路是先将图片下载手机本地,然后读取图片去做分享操作,思路是对的,但是在实现过程中遇到了问题,本来打算用Glide的保存图片到手机中,然后读取,在Android环境下下载,保存,加载图片都是没有问题的,但是在webview 中调用方法确实报了错。之后换了一种思路,将从服务器上获取图片直接转换字节输入流InputStream

如图:

URL pictureUrl = new URL(url);
InputStream in = pictureUrl.openStream();
bitmap = BitmapFactory.decodeStream(in);

然后再调用微信分享图片的方法就可以了,具体过程如下所示:

com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(data);
String url = jsonObject.getString("img").toString();
Bitmap bmp =getHttpBitmap(url);
//初始化 WXImageObject 和 WXMediaMessage 对象
WXImageObject imgObj = new WXImageObject(bmp);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;

//设置缩略图
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 10, 10, true);
bmp.recycle();
msg.thumbData = Util.bmpToByteArray(thumbBmp, true);
//构造一个Req

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("img");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
Constant.wx_api.sendReq(req);
public Bitmap getHttpBitmap(String url)
{
    Bitmap bitmap = null;
    try
    {
        URL pictureUrl = new URL(url);
        InputStream in = pictureUrl.openStream();
        bitmap = BitmapFactory.decodeStream(in);
        in.close();
    } catch (MalformedURLException e)
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    }
    return bitmap;
}

这样处理的话,就不用下载图片了,哈哈用户体验效果也好,没有耗时操作。

 
 

猜你喜欢

转载自blog.csdn.net/qq_33209777/article/details/86736877