Android微信分享

Android微信分享

需要注册开发者账号并且创建应用

微信开放平台

相关操作

在微信开放平台下载微信的jar包并导入项目。

libammsdk.jar

导入相应的类。

import com.tencent.mm.sdk.openapi.WXTextObject;

添加相应权限。
    <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"/> 
注册到微信。
// APP_ID是应用的appId
private static final String APP_ID="";
// IWXAPI是第三方app和微信通信的openapi接口
private IWXAPI api;

private void regToWx(){
    // 通过WXAPIFactory工厂,获取IWXAPI的实例
    api = WXAPIFactory.createWXAPI(getApplicationContext(),APP_ID,true);
    // 将应用注册到微信
    api.registerApp(APP_ID);
}
发送请求或响应到微信。
  • sendReq是第三方app主动发送消息给微信,发送完成之后会切回到第三方app界面(使用该方法)。boolean sendReq(BaseReq req);
  • sendResp是微信向第三方app请求数据,第三方app回应数据之后会切回到微信界面。boolean sendResp(BaseResp resp);
  • 注意:SendMessageToWX.Req的scene成员,如果scene填WXSceneSession,那么消息会发送至微信的会话内。如果scene填WXSceneTimeline(微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈),那么消息会发送至朋友圈。scene默认值为WXSceneSession。
  • Req.scene的类型
    • 分享到朋友圈 Req.scene = SendMessageToWX.Req.WXSceneTimeline
    • 分享到好友会话 Req.scene = SendMessageToWX.Req.WXSceneSession
    • 添加到微信收藏 Req.scene = SendMessageToWX.Req.WXSceneFavorite
    // 发送文字
    // 初始化一个WXTextObject对象
    WXTextObject textObj = new WXTextObject();
    textObj.text = text;
    // 用WXTextObject对象初始化一个WXMediaMessage对象
    WXMediaMessagemsg = new WXMediaMessage();
    msg.mediaObject = textObj;
    msg.description = text;
    // 构造一个Req
    SendMessageToWX.Req req = new SendMessageToWX.Req();
    // transaction字段用于唯一标识一个请求
    req.transaction = String.valueOf(System.currentTimeMillis());
    req.message = msg;
    // 分享到朋友圈 Req.scene = SendMessageToWX.Req.WXSceneTimeline
    // 分享到好友会话  Req.scene = SendMessageToWX.Req.WXSceneSession
    // 添加到微信收藏 Req.scene = SendMessageToWX.Req.WXSceneFavorite
    req.scene = isTimelineCb.isCHecked()?SendMessageToWX.Req.WXSceneTimeline:SendMessageToWX.Req.WXSceneSession;
    // 调用api接口发送数据到微信
    api.sendReq(req);

    

    // 发送图片
    Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.image);
    // 初始化WXImageObjcet和WXMediaMessage对象
    WXImageObject imgObj = new WXImageObject(bmp);
    WXMediaMessage msg = new WXMediaMessage();
    msg.mediaObject = imgObj;
    // 设置缩略图
    Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp,THUMB_SIZE,THUMB_SIZE,true);
    // 回收
    bmp.recycle();
    msg.thumbData = bmpToByteArray(thumbBmp,true);
    // 构造一个Req
    SendMessageToWX.Req req = new SendMessageToWX.Req();
    // transaction字段用于唯一标识一个请求
    req.transaction = String.valueOf(System.currentTimeMillis());
    req.message = msg;
    req.scene = isTimelineCb.isCHecked()?SendMessageToWX.Req.WXSceneTimeline:SendMessageToWX.Req.WXSceneSession;
    // 调用api接口发送数据到微信
    api.sendReq(req);

    /**
     * 将Bitmap转换成byte
     * @param bmp
     * @param needRecycle
     * @return
     */
    public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        bmp.compress(CompressFormat.PNG, 100, output);
        if (needRecycle) {
            bmp.recycle();
        }

        byte[] result = output.toByteArray();
        try {
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }
代码混淆
-keep class com.tencent.mm.sdk.** {
   *;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值