package ezy.sdk3rd.social.platforms.weixin; import android.app.Activity; import android.os.AsyncTask; import android.support.annotation.NonNull; import android.text.TextUtils; import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelmsg.SendMessageToWX; import com.tencent.mm.opensdk.modelmsg.WXImageObject; import com.tencent.mm.opensdk.modelmsg.WXMediaMessage; import com.tencent.mm.opensdk.modelmsg.WXMusicObject; import com.tencent.mm.opensdk.modelmsg.WXTextObject; import com.tencent.mm.opensdk.modelmsg.WXVideoObject; import com.tencent.mm.opensdk.modelmsg.WXWebpageObject; import ezy.sdk3rd.social.sdk.OnCallback; import ezy.sdk3rd.social.sdk.Platform; import ezy.sdk3rd.social.sdk.ResultCode; import ezy.sdk3rd.social.share.IShareable; import ezy.sdk3rd.social.share.ShareData; import ezy.sdk3rd.social.share.ShareTo; import ezy.sdk3rd.social.share.media.IMediaObject; import ezy.sdk3rd.social.share.media.MoImage; import ezy.sdk3rd.social.share.media.MoMusic; import ezy.sdk3rd.social.share.media.MoVideo; import ezy.sdk3rd.social.share.media.MoWeb; /** * Created by ezy on 17/3/18. */ public class WXShare extends WXBase implements IShareable { WXShare(Activity activity, Platform platform) { super(activity, platform); } @Override public void share(@NonNull final ShareData data, @NonNull final OnCallback<String> callback) { if (!mApi.isWXAppInstalled()) { callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "您未安装微信!"); return; } mCallback = callback; new AsyncTask<ShareData, Void, BaseReq>() { @Override protected BaseReq doInBackground(ShareData... params) { return makeReq(params[0]); } @Override protected void onPostExecute(BaseReq req) { mCallback.onStarted(mActivity); mApi.sendReq(req); } }.execute(data); } BaseReq makeReq(ShareData data) { WXMediaMessage message = new WXMediaMessage(); if (data.hasTitle()) { message.title = data.title; } if (data.hasDescription()) { message.description = data.description; } if (data.hasThumb()) { message.thumbData = data.thumb.toBytes(); } switch (data.type()) { case IMediaObject.TYPE_TEXT: message.mediaObject = new WXTextObject(data.text); break; case IMediaObject.TYPE_WEB: message.mediaObject = new WXWebpageObject(((MoWeb) data.media).url); break; case IMediaObject.TYPE_EMOJI: case IMediaObject.TYPE_IMAGE: { MoImage mo = (MoImage) data.media; WXImageObject wxo = new WXImageObject(); wxo.imagePath = mo.toUri(); if (TextUtils.isEmpty(wxo.imagePath)) { wxo.imageData = mo.toBytes(); } message.mediaObject = wxo; } break; case IMediaObject.TYPE_VIDEO: { MoVideo mo = (MoVideo) data.media; WXVideoObject wxo = new WXVideoObject(); wxo.videoUrl = mo.mediaUrl; wxo.videoLowBandUrl = mo.lowBandUrl; message.mediaObject = wxo; } break; case IMediaObject.TYPE_MUSIC: { MoMusic mo = (MoMusic) data.media; WXMusicObject wxo = new WXMusicObject(); wxo.musicUrl = mo.mediaUrl; wxo.musicDataUrl = mo.mediaDataUrl; wxo.musicLowBandUrl = mo.lowBandUrl; wxo.musicLowBandDataUrl = mo.lowBandDataUrl; message.mediaObject = wxo; } break; } SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis()); req.message = message; req.scene = toScene(mPlatform.getName()); return req; } @Override protected void onResultOk(SendMessageToWX.Resp resp) { mCallback.onSucceed(mActivity, ""); } int toScene(String platform) { switch (platform) { case ShareTo.WXSession: return 0; case ShareTo.WXTimeline: return 1; case ShareTo.WXFavorite: return 2; } return 0; } }