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;
}

這樣處理的話,就不用下載圖片了,哈哈用戶體驗效果也好,沒有耗時操作。

 

 


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章