package cn.bidaround.ytcore.tencentwb; import android.app.Activity; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; import cn.bidaround.ytcore.YtCore; import cn.bidaround.ytcore.YtShareListener; import cn.bidaround.ytcore.data.BaseShare; import cn.bidaround.ytcore.data.ShareData; import cn.bidaround.ytcore.data.YtPlatform; import cn.bidaround.ytcore.login.AuthListener; import cn.bidaround.ytcore.login.AuthLogin; import cn.bidaround.ytcore.login.AuthUserInfo; import cn.bidaround.ytcore.util.Util; import com.tencent.weibo.sdk.android.api.WeiboAPI; import com.tencent.weibo.sdk.android.api.util.SharePersistent; import com.tencent.weibo.sdk.android.model.ModelResult; import com.tencent.weibo.sdk.android.network.HttpCallback; /** * 腾讯微博分享 * @author youtui * @since 14/5/8 */ public class TencentWbShare extends BaseShare { private YtPlatform platform = YtPlatform.PLATFORM_TENCENTWEIBO; public TencentWbShare(Activity activity, YtShareListener listener, ShareData shareData) { super(activity, shareData, listener); } /** * 分享到腾讯微博 */ public void shareToTencentWb() { // 分享到腾讯微博 if (shareData.getShareType() == ShareData.SHARETYPE_MUSIC || shareData.getShareType() == ShareData.SHARETYPE_VIDEO) { Toast.makeText(YtCore.getAppContext(), "腾讯微博不支持音乐和视频分享", Toast.LENGTH_SHORT).show(); return; } // 如果腾讯微博授权过期,先获取授权 if (isTencentWbAuthExpired()) doAuth(); else doShare(); } /** * 判断腾讯微博授权是否过期 */ private boolean isTencentWbAuthExpired() { boolean expired = true; SharedPreferences preference = activity.getSharedPreferences("ANDROID_SDK", 0); String authorizeTimeStr = preference.getString("AUTHORIZETIME", null); String expiresTime = preference.getString("EXPIRES_IN", null); long currentTime = System.currentTimeMillis() / 1000; if (expiresTime != null && expiresTime != "" && authorizeTimeStr != null && authorizeTimeStr != "") { if ((Long.valueOf(authorizeTimeStr) + Long.valueOf(expiresTime)) > currentTime) { expired = false; } } return expired; } private void doAuth() { AuthLogin tencentWbLogin = new AuthLogin(); AuthListener tencentWbListener = new AuthListener() { @Override public void onAuthSucess(AuthUserInfo userInfo) { doShare(); } @Override public void onAuthFail() { Util.dismissDialog(); } @Override public void onAuthCancel() { Util.dismissDialog(); } }; tencentWbLogin.tencentWbAuth(YtCore.getAppContext(), tencentWbListener); } private void doShare() { WeiboAPI weibo = new WeiboAPI(SharePersistent.getInstance().getAccount(activity)); if (shareData.getShareType() == ShareData.SHARETYPE_IMAGEANDTEXT || shareData.getShareType() == ShareData.SHARETYPE_IMAGE) { Bitmap bm = BitmapFactory.decodeFile(shareData.getImagePath()); String text = shareData.getText(); // 如果腾讯微博分享文字过长,截取前面内容和跳转url if (shareData.getShareType() == ShareData.SHARETYPE_IMAGEANDTEXT) { if (text.length() > 110) { text = text.substring(0, 109); text += "..."; } // 包换?符号就会出现错误 if (shareData.getTargetUrl() != null && !"".equals(shareData.getTargetUrl()) && !"null".equals(shareData.getTargetUrl()) && !shareData.getTargetUrl().contains("?")) { text += shareData.getTargetUrl(); } } else if (shareData.getShareType() == ShareData.SHARETYPE_IMAGE) { text = ""; } if (bm == null) { Toast.makeText(activity, activity.getResources().getString(activity.getResources() .getIdentifier("yt_nopic", "string", activity.getPackageName())), Toast.LENGTH_SHORT).show(); Util.dismissDialog(); } else { weibo.addPic(activity, text, "json", 0d, 0d, bm, -1, 0, mCallBack, null, 4); } } else if (shareData.getShareType() == ShareData.SHARETYPE_TEXT) { String text = shareData.getText(); // 如果腾讯微博分享文字过长,截取前面内容和跳转url if (text.length() > 110) { text = text.substring(0, 109); text += "..."; } // 包换?符号就会出现错误 if (shareData.getTargetUrl() != null && !"".equals(shareData.getTargetUrl()) && !"null".equals(shareData.getTargetUrl()) && !shareData.getTargetUrl().contains("?")) { text += shareData.getTargetUrl(); } weibo.addWeibo(activity, text, "json", 0d, 0d, -1, 0, mCallBack, null, 4); } } /** * 腾讯微博分享回调 */ private HttpCallback mCallBack = new HttpCallback() { @Override public void onResult(Object object) { ModelResult result = (ModelResult) object; if (result != null && result.isSuccess()) { YtShareListener.sharePoint(activity, platform.getChannleId(), !shareData.isAppShare()); if (listener != null) listener.onSuccess(platform, result.getError_message()); } else { if (listener != null) { String errorMessage = null; if (result != null) errorMessage = result.getError_message(); listener.onError(platform, errorMessage); } } Util.dismissDialog(); } }; };