androidAPP接入微信分享【最新】

一、接入前操作

博主昨天接入微信分享遇到了一个大坑和一些小问题,今天跟大家分享一下这些问题和处理办法。

接入前需要注册微信开放平台:https://open.weixin.qq.com/

添加依赖等操作看这里:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=7bc53b063369e012229fe72e75deed066003afea&lang=zh_CN

做完上面的操作就可以开始写接入代码了。

 

二、分享代码接入

1.在application类中注册应用:

private IWXAPI wxApi;
//注册微信
wxApi = WxApiUtils.regToWx(getApplicationContext());
public static IWXAPI regToWx(Context context){
        IWXAPI iwxapi = WXAPIFactory.createWXAPI(context,APP_ID,true);
        iwxapi.registerApp(APP_ID);

        return iwxapi;
    }

注:APP_ID填你自己应用的APP_ID,在微信开放平台添加上你的应用后会有。

建议:调用微信接口的方法写成一个工具类,博主的微信接口调用都写在 WxApiUtils类中。

2.分享图片到微信聊天窗口或朋友圈

public static boolean sharePic(Context context,int shareType,int resourceId){
        Bitmap bmp = BitmapFactory.decodeResource(context.getResources(),resourceId);
        WXImageObject imgObj = new WXImageObject(bmp);
        WXMediaMessage mediaMsg = new WXMediaMessage();
        mediaMsg.mediaObject = imgObj;
        //设置缩略图
        Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp,50,50,true);
        bmp.recycle();
        mediaMsg.thumbData = ImageUtils.bmpToByteArray(thumbBmp,true);

        //构造一个req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = "img"+String.valueOf(System.currentTimeMillis());
        req.message = mediaMsg;

        switch (shareType){
            case SHARE_TYPE_SESSION:
                req.scene = SendMessageToWX.Req.WXSceneSession;
                break;
            case SHARE_TYPE_TIME_LINE:
                req.scene = SendMessageToWX.Req.WXSceneTimeline;
                break;
        }
       return ShuShanApplication.getInstance().getWxApi().sendReq(req);
    }

参数介绍:

shareType:分享的类型,0分享到聊天窗口,1分享到朋友圈

resourceId:分享的图片资源id(注:后面会提供一个重载方法,用Bitmap替代resourceId,方便上传网络图片)

重载方法:

public static boolean sharePic(Context context,int shareType,Bitmap bmp){
        WXImageObject imgObj = new WXImageObject(bmp);
        WXMediaMessage mediaMsg = new WXMediaMessage();
        mediaMsg.mediaObject = imgObj;
        //设置缩略图
        Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp,50,50,true);
        bmp.recycle();
        mediaMsg.thumbData = ImageUtils.bmpToByteArray(thumbBmp,true);

        //构造一个req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = "img"+String.valueOf(System.currentTimeMillis());
        req.message = mediaMsg;

        switch (shareType){
            case SHARE_TYPE_SESSION:
                req.scene = SendMessageToWX.Req.WXSceneSession;
                break;
            case SHARE_TYPE_TIME_LINE:
                req.scene = SendMessageToWX.Req.WXSceneTimeline;
                break;
        }
        return ShuShanApplication.getInstance().getWxApi().sendReq(req);
    }

 

这里有几个小问题:

 

1.bmpToByteArray()方法微信的例子里没有提供出来!!他只写了个Util.bmpToByteArray()就没有然后了!!而且Util这个类没有添加到依赖的微信包里,呵呵,仿佛在逗我笑,你是让我猜这个方法写的啥吗??当然,之后百度到了:

/**
     * 将bmp转换为字节数组
     * @param bmp
     * @param needRecycle
     * @return
     */
    public static byte[] bmpToByteArray(final Bitmap bmp, 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;
    }

 

2."img"+String.valueOf(System.currentTimeMillis());

这里微信的例子里写的是:buildTransaction("img");然后也是没有任何介绍,我只想说这个接入文档写的真是太“详细”了,接入起来很“省心”呢!!

 

3.测试

大坑就是在测试这里了。

坑:点击分享一闪而过,分享到对话框和朋友圈都是这样。

网上查了很多方法,打包APK出来测试啊,什么什么的啊,都没有作用,浪费了几个小时时间。

之后发现原因:卸载安装一次APP,签名会改变。(会与之前在开放平台创建APP时填入的签名不同)

解决方法:

使用开放平台提供的签名工具:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=7bc53b063369e012229fe72e75deed066003afea&lang=zh_CN

翻到最底下有个“签名生成工具”,点击它就可以下载。

安装好之后run你的应用,跑起来之后打开签名生成工具,输入APP的包名就可以生成签名,把这个签名覆盖掉之前在开放平台设置的签名,然后再测试分享功能,成功!

 

4.结语

微信开放平台的开发文档真的太坑人,不够详细,还好你们翻到了我这篇博客。

解决了给个赞吧!

有问题请留言,博主会尽快回复!

 

另,附上博主自己的淘宝客项目下载码(可查淘宝商品优惠券,使用优惠券购物后可加微信客服返现,返现额度全网最高,客服微信android_jesse):

 

博主上传资源下载链接:

自制免费无广告小说阅读APP下载:

https://download.csdn.net/download/yonghuming_jesse/10390364

全屏播放视频不拉伸源码:

https://download.csdn.net/download/yonghuming_jesse/10646274

科大讯飞语音评测服务接入源码:

https://download.csdn.net/download/yonghuming_jesse/10616924

android饺子播放器使用源码:

https://download.csdn.net/download/yonghuming_jesse/10619119

视频播放前显示视频第一帧源码:

https://download.csdn.net/download/yonghuming_jesse/10646332

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JesseAndroid

每一份支持都是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值