package ren.solid.ganhuoio.utils; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import com.sina.weibo.sdk.api.ImageObject; import com.sina.weibo.sdk.api.TextObject; import com.sina.weibo.sdk.api.WebpageObject; import com.sina.weibo.sdk.api.WeiboMultiMessage; import com.sina.weibo.sdk.api.share.IWeiboShareAPI; import com.sina.weibo.sdk.api.share.SendMultiMessageToWeiboRequest; import com.sina.weibo.sdk.api.share.WeiboShareSDK; import com.sina.weibo.sdk.auth.AuthInfo; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WeiboAuthListener; import com.sina.weibo.sdk.exception.WeiboException; import com.sina.weibo.sdk.utils.Utility; import ren.solid.ganhuoio.R; import ren.solid.ganhuoio.common.constant.Constants; /** * Created by _SOLID * Date:2016/5/23 * Time:15:34 */ public class SinaWeiBoShareUtil { private final Context mContext; private WebpageObject mWebPageObject = null; private TextObject mTextObject = null; private ImageObject mImageObject = null; public SinaWeiBoShareUtil(Context context) { this.mContext = context; setImageObj(); } /** * 第三方应用发送请求消息到微博,唤起微博分享界面。 * 注意:当 {@link IWeiboShareAPI#getWeiboAppSupportAPI()} >= 10351 时,支持同时分享多条消息, * 同时可以分享文本、图片以及其它媒体资源(网页、音乐、视频、声音中的一种)。 */ public void sendMultiMessage() { // 创建微博分享接口实例 IWeiboShareAPI mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(mContext, Constants.SINA_APP_KEY); // 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。 // 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示 // NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册 mWeiboShareAPI.registerApp(); // 1. 初始化微博的分享消息 WeiboMultiMessage weiboMessage = new WeiboMultiMessage(); if (mTextObject != null) { weiboMessage.textObject = mTextObject; } weiboMessage.imageObject = mImageObject; // 用户可以分享其它媒体资源(网页、音乐、视频、声音中的一种) if (mWebPageObject != null) { weiboMessage.mediaObject = mWebPageObject; } // if (hasMusic) { // weiboMessage.mediaObject = getMusicObj(); // } // if (hasVideo) { // weiboMessage.mediaObject = getVideoObj(); // } // if (hasVoice) { // weiboMessage.mediaObject = getVoiceObj(); // } // 2. 初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest(); // 用transaction唯一标识一个请求 request.transaction = String.valueOf(System.currentTimeMillis()); request.multiMessage = weiboMessage; AuthInfo authInfo = new AuthInfo(mContext, Constants.SINA_APP_KEY, Constants.SINA_REDIRECT_URL, Constants.SINA_SCOPE); Oauth2AccessToken accessToken = AuthorityUtils.readOauth2AccessToken(); String token = ""; if (accessToken != null) { token = accessToken.getToken(); } mWeiboShareAPI.sendRequest((Activity) mContext, request, authInfo, token, new WeiboAuthListener() { @Override public void onWeiboException(WeiboException arg0) { } @Override public void onComplete(Bundle bundle) { Oauth2AccessToken newToken = Oauth2AccessToken.parseAccessToken(bundle); AuthorityUtils.writeAccessToken(newToken); } @Override public void onCancel() { } }); } /** * 创建多媒体(网页)消息对象。 * * @return 多媒体(网页)消息对象。 */ public void setWebpageObj(String title, String url, String desc) { WebpageObject mediaObject = new WebpageObject(); mediaObject.identify = Utility.generateGUID(); mediaObject.title = title; mediaObject.description = desc; Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.logo); // 设置 Bitmap 类型的图片到视频对象里 设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。 mediaObject.setThumbImage(bitmap); mediaObject.actionUrl = url; mediaObject.defaultText = "Webpage 默认文案"; mWebPageObject = mediaObject; } /** * 创建文本消息对象。 * * @return 文本消息对象。 */ public void setTextObj(String textContent) { TextObject textObject = new TextObject(); textObject.text = textContent; mTextObject = textObject; } /** * 创建图片消息对象。 * * @return 图片消息对象。 */ private void setImageObj() { ImageObject imageObject = new ImageObject(); //设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。 Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.logo); imageObject.setImageObject(bitmap); mImageObject = imageObject; } }