Android 微信分享

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/quanyechacsdn/article/details/78977815

第三方集成步骤大致都差不多:平台注册,引入依赖包,配置清单文件,初始化操作,最后引用

注册就不用说了,直接上第三方官网,按照提示申请注册账号和应用,获取相应的appid,appkey等;

第一步:引入依赖包,项目build.gradle之下

compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

其中,里面的without表示没有统计功能,如果需要有统计功能修改为with即可,+号表示随时引入最新包;

第二步:配置清单AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

 

第三步:注册到微信(我是在Application的onCreate中注册的,也可以在Activity中注册)

 

IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, ShareKey.WX_ID, true);
mWxApi.registerApp(ShareKey.WX_ID);

第四步:分享内容到微信

 

IWXAPI mWXApi = WXAPIFactory.createWXAPI(context, ShareKey.WX_ID, true);
mWXApi.registerApp(ShareKey.WX_ID);

if (!mWXApi.isWXAppInstalled()) {
    Tool.toast(context, R.string.share_unInstall_wx);
    return;
}

WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = url;

WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = title;
msg.description = decribe;
msg.thumbData = getWXThumb(bitmap).toByteArray();

SendMessageToWX.Req req = new SendMessageToWX.Req();
//WXSceneTimeline朋友圈    WXSceneSession聊天界面
req.scene = isTimeLineCb ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;//聊天界面
req.message = msg;
req.transaction = String.valueOf(System.currentTimeMillis());
mWXApi.sendReq(req);

 

这是图片需要处理一下,太大了分享会报错

public static final int IMAGE_LENGTH_LIMIT = 6291456;

private static ByteArrayOutputStream getWXThumb(Bitmap resource) {
    Bitmap thumb = createScaledBitmap(resource, 100, true);
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    int quality = 90;
    int realLength = Util.getBitmapByteSize(resource.getWidth(), resource.getHeight(), Bitmap.Config.ARGB_8888);
    if (realLength > IMAGE_LENGTH_LIMIT) {
        quality = (int) (IMAGE_LENGTH_LIMIT * 1f / realLength * 100);
    }
    if (quality < 75) {
        quality = 75;
    }
    resource.compress(Bitmap.CompressFormat.PNG, quality, output);
    output.reset();
    thumb.compress(Bitmap.CompressFormat.PNG, 85, output);
    return output;
}

 

 

第四步:最后就是分享的回调了(在自己项目包名下创建目录wxapi,这个目录下创建WXEntryActivity,也就是:你的包名.wxapi.WXEntryActivity,这个类需要在清单注册)

<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:screenOrientation="portrait" />

 

WXEntryActivity的实现:

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

    private final int REQUEST_PAY = 100;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        share = ShareKey.getShare(this);
        //如果没回调onResp,八成是这句没有写
        WXAPIFactory.createWXAPI(this, WX_ID, false).handleIntent(getIntent(), this);
    }

    // 微信发送请求到第三方应用时,会回调到该方法
    @Override
    public void onReq(BaseReq req) {
    }

    // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
    //app发送消息给微信,处理返回消息的回调
    @Override
    public void onResp(BaseResp resp) {
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                switch (resp.getType()) {
                    case RETURN_MSG_TYPE_SHARE:
                        Tool.toast(this, "微信分享取消");
                        finish();
                        break;
        
                }
                break;

            case BaseResp.ErrCode.ERR_OK:
                switch (resp.getType()) {
                  case RETURN_MSG_TYPE_SHARE:
                        finish();
                        break;
                }
                break;
        }
    }

到此,微信分享就完事了。说一下需要注意的地方,

 

1 , app签名需要和微信平台上申请的一致

2 ,分享的图片大小要注意,缩略图不能大于32k

3 , 回调的WXEntryActivity要放对位置,清单也要添加

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页