Android微信分享

    xiaoxiao2021-11-02  87

    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.** { *; }
    转载请注明原文地址: https://ju.6miu.com/read-677934.html

    最新回复(0)