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; }
這樣處理的話,就不用下載圖片了,哈哈用戶體驗效果也好,沒有耗時操作。