egret Android微端接入微信(三)分享图片

图片通过base64字符串传到android原生平台再进行分享处理

ts代码

let render = new egret.RenderTexture();

render.drawToTexture(box);

let base64 = render.toDataURL('image/png');

let shareData = {base64Data : `${base64}`};

egret.ExternalInterface.call('callNativeForShareImage', JSON.stringify(shareData));

android端代码

.setExternalInterface(, INativePlayer.INativeInterface() {
    callback(String s) {
        Log.(, s);
        wxShareImage(s);
    }
});
Bitmap base64ToBitmap(String base64Data) {
    [] bytes = Base64.(base64Data, Base64.);
    BitmapFactory.(bytes, , bytes.);
}
wxShareImage(String jsonString){
    (!= && .isWXAppInstalled()) {
        String base64Data = ;
        {
            JSONObject jsonObject = JSONObject(jsonString);
            base64Data = jsonObject.getString();
        } (JSONException e) {
            e.printStackTrace();
        }
        (base64Data == ){
            Toast.(, , Toast.).show();
            ;
        }
        base64Data = base64Data.replace(,);
        Bitmap bmp = base64ToBitmap(base64Data);
        WXImageObject imgObj = WXImageObject(bmp);

        WXMediaMessage msg = WXMediaMessage();
        msg.= imgObj;

        Bitmap thumbBmp = Bitmap.(bmp, , , );
        bmp.recycle();
        msg.= Util.(thumbBmp, );  SendMessageToWX.Req req = SendMessageToWX.Req();
        req.= buildTransaction();
        req.= msg;
        req.= ;
        .sendReq(req);
    }{
        Toast.(, , Toast.).show();
    }
}

android端将ts传过来的base64转为bitmap,再做原生分享图片操作,这里需要注意的是base64字符串需要先把开头

data:image/png;base64,

去掉再转为bitmap,否则转换会返回null



发表评论

(必填)

(必填)

(以便回访)

博客已稳定运行: 访问量:156,356 views 网站备案号:闽ICP备17026396号-1