1.在微信开放平台 创建移动应用,并通过审核,这里要注意的是应用签名要一致,(下载官网上的APK,输入包名就可以生成了)
2.具体用法可以看官网的文档,这里只总结使用过程遇到的问题和解决方法
3.

参照这个用法分享是可以的,但是如果你的图片大于32kb就不会调微信分享的界面。
MicroMsg.SDK.WXApiImplV10: sendReq checkArgs fail

问题:如何解决大于32kb图片不调微信的问题
解决方案:1.因为图片是后台返回的url,android 端这边暂时只能将本地的资源压缩,而不能压缩url的图片,会提示说找不到资源。。(目前我用过很多办法都不行,如果有好的方法希望分享给我,谢谢)。所以目前我这边是后台压缩完图片返回给我

public class WeChatShareUtil {    //从官网申请的合法appId    private static final int TIMELINE_SUPPORTED_VERSION = 0x21020001;    //IWXAPI是第三方app和微信通信的openapi接口    private IWXAPI api;    private Context context;    public static WeChatShareUtil weChatShareUtil;    public static WeChatShareUtil getInstance(Context context) {        if (weChatShareUtil == null) {            weChatShareUtil = new WeChatShareUtil();        }        if (weChatShareUtil.api != null) {            weChatShareUtil.api.unregisterApp();        }        weChatShareUtil.context = context;        weChatShareUtil.regToWx();        return weChatShareUtil;    }    //注册应用id到微信    private void regToWx() {        //通过WXAPIFactory工厂,获取IWXAPI的实例        api = WXAPIFactory.createWXAPI(context, Contonts.APP_ID, false);        //将应用的appId注册到微信        api.registerApp(Contonts.APP_ID);    }    /**     * 分享文字到朋友圈或者好友     *     * @param text  文本内容     * @param scene 分享方式:好友还是朋友圈     */    public boolean shareText(String text, int scene) {        //初始化一个WXTextObject对象,填写分享的文本对象        WXTextObject textObj = new WXTextObject();        textObj.text = text;        return share(textObj, text, scene);    }    /**     * 分享图片到朋友圈或者好友     *     * @param bmp   图片的Bitmap对象     * @param scene 分享方式:好友还是朋友圈     */    public boolean sharePic(Bitmap bmp, int scene) {        //初始化一个WXImageObject对象        WXImageObject imageObj = new WXImageObject(bmp);        //设置缩略图        Bitmap thumb = Bitmap.createScaledBitmap(bmp, 60, 60, true);        bmp.recycle();        return share(imageObj, thumb, scene);    }    /**     * 分享网页到朋友圈或者好友,视频和音乐的分享和网页大同小异,只是创建的对象不同。     * 详情参考官方文档:     * https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN     *     * @param url         网页的url     * @param title       显示分享网页的标题     * @param description 对网页的描述     * @param scene       分享方式:好友还是朋友圈     */    public boolean shareUrl(String url, String title, Bitmap thumb, String description, int scene) {        //初试话一个WXWebpageObject对象,填写url        WXWebpageObject webPage = new WXWebpageObject();        webPage.webpageUrl = url;        return share(webPage, title, thumb, description, scene);    }    private boolean share(WXMediaMessage.IMediaObject mediaObject, Bitmap thumb, int scene) {        return share(mediaObject, null, thumb, null, scene);    }    private boolean share(WXMediaMessage.IMediaObject mediaObject, String description, int scene) {        return share(mediaObject, null, null, description, scene);    }    private boolean share(WXMediaMessage.IMediaObject mediaObject, String title, Bitmap thumb, String description, int scene) {        //初始化一个WXMediaMessage对象,填写标题、描述        WXMediaMessage msg = new WXMediaMessage(mediaObject);        if (title != null) {            msg.title = title;        }        if (description != null) {            msg.description = description;        }        if (thumb != null) {            msg.thumbData = bmpToByteArray(thumb, true);        }        //构造一个Req        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = String.valueOf(System.currentTimeMillis());        req.message = msg;        req.scene = scene;        return api.sendReq(req);    }    //判断是否支持转发到朋友圈    //微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈    public boolean isSupportWX() {        int wxSdkVersion = api.getWXAppSupportAPI();        return wxSdkVersion >= TIMELINE_SUPPORTED_VERSION;    }    private byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {        ByteArrayOutputStream output = new ByteArrayOutputStream();        bmp.compress(Bitmap.CompressFormat.PNG, 100, output);        if (needRecycle) {            bmp.recycle();        }        byte[] result = output.toByteArray();        try {            output.close();        } catch (Exception e) {            e.printStackTrace();        }        return result;    }}

可以看到shareUrl(String url, String title, Bitmap thumb, String description, int scene)
图片必须是Bitmap
于是我这边就要将url转换为Bitmap

/**     * 根据图片的url路径获得Bitmap对象     */    public static Bitmap returnBitMap(String url) {        URL myFileUrl = null;        Bitmap bitmap = null;        try {            myFileUrl = new URL(url);        } catch (MalformedURLException e) {            e.printStackTrace();        }        try {            HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();            conn.setDoInput(true);            conn.connect();            InputStream is = conn.getInputStream();            bitmap = BitmapFactory.decodeStream(is);            is.close();        } catch (IOException e) {            e.printStackTrace();        }        return bitmap;    }

如果有其他好的实现方式欢迎在评论中留言,我实践过之后会对应更新 ,谢谢!

更多相关文章

  1. Android消息队列模型——Thread,Handler,Looper,Massage Queue
  2. android中开启线程
  3. Intent加强
  4. Android设置Alpha值实现图片渐变效果
  5. Android(安卓)的消息机制(1)
  6. Android(安卓)多线程 \Looper 分享
  7. android中的Context(android内核学习记录)
  8. Android(安卓)Activity管理之Activity栈
  9. 干货 | Kotlin超棒的语言特性

随机推荐

  1. 设计模式之命令模式
  2. java网络编程(1)基础知识
  3. 既然硕士毕业也去搞开发,那我还读个喵的研
  4. 深入分析java中的反射机制
  5. java集合系列(7)Stack
  6. Qt on Android,输入法弹出后,界面无法自适
  7. 设计模式之抽象工厂模式
  8. 深入理解java中的泛型机制
  9. 设计模式之建造者模式
  10. 设计模式之迭代器模式