您的当前位置:首页正文

android 分享到微信小程序到微信朋友,分享截图图片到微信。

2024-11-28 来源:个人技术集锦

功能需求:点击分享时,将小程序分享到微信,并截取当前屏幕作为主图。

难点:微信微信小程序写的太垃圾了,标注不清晰。分享图片大小不能超过32K,需要压缩。

 WXMiniProgramObject miniProgram = new WXMiniProgramObject();
                miniProgram.webpageUrl="";// 兼容低版本的网页链接
                miniProgram.userName="gh_12345678";//小程序ID
                miniProgram.path="/pages/index/index";//小程序路径
                WXMediaMessage mediaMessage = new WXMediaMessage(miniProgram);
                mediaMessage.title = "";//小程序消息title
                mediaMessage.description = ""; // 小程序消息desc
//                Bitmap bitmap = BitmapFactory.decodeResource(BusinessDisplayActivity.this.getResources(),R.mipmap.ic_launcher);
                Bitmap bitmap = capture(rc);
//                Bitmap sendBitmap = Bitmap.createScaledBitmap(bitmap,50,50,true);
                mediaMessage.thumbData = bmpToByteArray(bitmap);

                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = ""; // 小程序消息封面图片
                req.scene = SendMessageToWX.Req.WXSceneSession;
                req.message = mediaMessage;
                Constants.wx_api.sendReq(req);
                bitmap.recycle();

压缩

 public static byte[] bmpToByteArray(Bitmap bitmap) {
        if (bitmap == null) {
            return null;
        }
        try {
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            byte[] result = null;
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
            int options = 100;
            while (output.toByteArray().length > 35*1024) {
                Log.e("TAG_daxiao","=="+output.toByteArray().length);
                output.reset(); //清空output
                bitmap.compress(Bitmap.CompressFormat.JPEG, options, output);
                options /= 2;
            }
            result = output.toByteArray();

            bitmap.recycle();

            output.close();
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

 

注意:如果涉及到布局生成图片,需要使用Handler。如果不使用Handler延迟,当布局显示后,截图已经完成。

 

 

显示全文