android微信源生SDK分享问题

android微信源生SDK分享问题

老生常谈了,不过还是记录一下这些坑比较合适!今天测试忽然发现,微信分享出去的条目,自身机子可以看到图片,而别人的手机上却发现缩略图没了,成为另一个链接黑图。这种问题自然是先考虑一下是否自身图片资源有啥问题,经过查看,图片并无毛病!因此只能另寻他法了。百度上很多答案大同小异,都说是图片太大(微信官方也指出:android分享图片不能大于32K),但是实际却是当图片大于32K,根本不能分享成功!因此这并不是我的问题原因!讲到这顺便附上分享图片时,对图片压缩处理的方法吧:
我们都知道微信源生分享的方法(带标题的链接)大致是这样的

//注意传入的数据不能大于10M,开发文档上写的
        WXWebpageObject webpage = new WXWebpageObject();
        webpage.webpageUrl = "url";//链接地址
        WXMediaMessage msg = new WXMediaMessage(webpage);
        msg.title = "title";//标题
        msg.description = "content";//内容、描述
        //msg.mediaObject实际上是个IMediaObject对象,
        //它有很多实现类,每一种实现类对应一种发送的信息,
        //比如WXTextObject对应发送的信息是文字,想要发送文字直接传入WXTextObject对象就行
        //官方文档介绍这个bitmap不能超过32kb,如果超过32kb则抛异常,分享失败
        //如果一个像素是8bit的话换算成正方形的bitmap则边长不超过181像素,边长设置成150是比较保险的
        //或者使用bmpToByteArray(thumbBitmap);省去自己转换二进制数据的过程
        //在这设置缩略图
        Bitmap thumb = BitmapFactory.decodeResource(m_Context.getResources(), R.drawable.icon);
        //方法一:bmpToByteArray(Bmp,needrecycle)方法控制图片质量--压缩率、分辨率
//        msg.thumbData = bmpToByteArray(thumb, true);
        //方法二:msg.setThumbImage(Bmp)方法控制图片实际尺寸--宽高
        Bitmap thumbBmp = Bitmap.createScaledBitmap(thumb, 100, 100, false);//API方法,自己点进去看100,100就是设置图片宽高的
        msg.setThumbImage(thumbBmp);
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = buildTransaction("webpage");
        req.message = msg;
        req.scene = SendMessageToWX.Req.WXSceneSession;   //设置发送给朋友
//      req.scene = SendMessageToWX.Req.WXSceneTimeline;    //设置发送到朋友圈
        msgApi.sendReq(req);


public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 90, output);//CompressFormat.JPEG是图片格式,也可以选择CompressFormat.PNG; 90是压缩率
        if (needRecycle) {
            bmp.recycle();
        }
        byte[] result = output.toByteArray();
        try {
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

好了,言归正传,再来说说分享以后为什么有的不能显示缩略图吧。。。原文在这!
经测试,发现title或者desc方案中不能携带“红包”或者“现金”等关键字!否则会被微信屏蔽!

你可能感兴趣的:(移动开发,Android)