Files
assistant-android/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java

372 lines
17 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gh.gamecenter;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_SHAREICON;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_SHAREURL;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_SHARE_STYLE;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_SUMMARY;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_TITLE;
import static com.gh.gamecenter.common.constant.EntranceConsts.KET_TYPE;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ThumbnailUtils;
import android.os.Bundle;
import android.util.Base64;
import androidx.annotation.NonNull;
import com.therouter.router.Route;
import com.therouter.TheRouter;
import com.gh.common.constant.Config;
import com.gh.common.util.IntegralLogHelper;
import com.gh.gamecenter.common.callback.BiCallback;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.eventbus.EBShare;
import com.gh.gamecenter.common.utils.BitmapUtils;
import com.gh.gamecenter.common.utils.ImageUtils;
import com.gh.gamecenter.common.utils.SensorsBridge;
import com.gh.gamecenter.common.utils.ShareUtils;
import com.gh.gamecenter.core.provider.IAppProvider;
import com.lightgame.utils.Utils;
import com.sina.weibo.sdk.api.ImageObject;
import com.sina.weibo.sdk.api.TextObject;
import com.sina.weibo.sdk.api.WeiboMultiMessage;
import com.sina.weibo.sdk.auth.AuthInfo;
import com.sina.weibo.sdk.common.UiError;
import com.sina.weibo.sdk.openapi.IWBAPI;
import com.sina.weibo.sdk.openapi.WBAPIFactory;
import com.sina.weibo.sdk.share.WbShareCallback;
import org.greenrobot.eventbus.EventBus;
import java.io.ByteArrayOutputStream;
/**
* Created by khy on 2016/11/23.
* <p>
* 微博分享
*/
@Route(path = RouteConsts.activity.weiBoShareActivity)
public class WeiBoShareActivity extends Activity implements WbShareCallback {
private final IAppProvider mAppProvider = TheRouter.get(IAppProvider.class);
private static final String WEIBO_SCOPE = (
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write");
private String shareUrl;
private String mShareStyle;
private String mTitle;
private String mSummary;
private String mShareType;
private IWBAPI mWBAPI;
@NonNull
public static Intent getWeiboShareIntent(Context context, String shareUrl, String shareIcon,
String shareTitle, String shareSummary, String shareType) {
Intent intent = new Intent(context, WeiBoShareActivity.class);
Bundle bundle = new Bundle();
bundle.putString(KET_SHARE_STYLE, "NORMAL");
bundle.putString(KET_TITLE, shareTitle);
bundle.putString(KET_SHAREICON, shareIcon);
bundle.putString(KET_SUMMARY, shareSummary);
bundle.putString(KET_SHAREURL, shareUrl);
bundle.putString(KET_TYPE, shareType);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return intent;
}
// 分享图片专用
@NonNull
public static Intent getWeiboImageShareIntent(Context context) {
Intent intent = new Intent(context, WeiBoShareActivity.class);
Bundle bundle = new Bundle();
bundle.putString(KET_SHARE_STYLE, "IMAGE");
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mAppProvider != null) {
mAppProvider.setDisableSplashAdTemporarily(true);
}
Bundle extras = getIntent().getExtras();
if (extras == null) return;
String shareIcon = null;
mShareStyle = extras.getString(KET_SHARE_STYLE);
if ("NORMAL".equals(mShareStyle)) {
mTitle = extras.getString(KET_TITLE);
shareIcon = extras.getString(KET_SHAREICON);
mSummary = extras.getString(KET_SUMMARY);
shareUrl = extras.getString(KET_SHAREURL);
mShareType = extras.getString(KET_TYPE);
}
Utils.toast(this, com.gh.gamecenter.common.R.string.share_skip);
mWBAPI = WBAPIFactory.createWBAPI(this);
mWBAPI.registerApp(this, new AuthInfo(this, Config.WEIBO_APPKEY, "http://www.sina.com", WEIBO_SCOPE));
if ("NORMAL".equals(mShareStyle)) {
if (shareIcon != null) {
loadIconAndShare(shareIcon);
} else {
onError(new UiError(0, "", ""));
}
} else if ("IMAGE".equals(mShareStyle)) {
shareImage();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mWBAPI != null) {
mWBAPI.doResultIntent(data, this);
}
}
private void loadIconAndShare(String iconUrl) {
ImageUtils.getBitmap(iconUrl, new BiCallback<Bitmap, Boolean>() {
@Override
public void onFirst(Bitmap bitmap) {
Utils.log("分享获取bitmap成功准备分享");
if (ShareUtils.ShareEntrance.video.name().equals(mShareType)) {
// 分享类型为视频时裁为正方形
int dimension = Math.min(bitmap.getWidth(), bitmap.getHeight());
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);
}
Bitmap compressBp = BitmapUtils.compressBitmap(bitmap, 200);
Bitmap bgBitmap;
if (ShareUtils.ShareEntrance.askInvite.name().equals(mShareType) || ShareUtils.ShareEntrance.askNormal.name().equals(mShareType)) {
bgBitmap = compressBp;
} else {
bgBitmap = ShareUtils.getInstance(getApplicationContext()).addBackGround(compressBp);
}
TextObject textObject = new TextObject();
if (ShareUtils.ShareEntrance.tools.name().equals(mShareType)) {
textObject.text = mTitle + "@光环的游戏日常";
} else if (ShareUtils.ShareEntrance.shareGh.name().equals(mShareType)) {
textObject.text = "这个App可以下载各种热门卡牌手游的加速版绿色安全超级省心做日常效率提高3-5倍不用肝的感觉真好 @光环的游戏日常";
} else if (ShareUtils.ShareEntrance.plugin.name().equals(mShareType)
|| ShareUtils.ShareEntrance.game.name().equals(mShareType)) {
textObject.text = "向你推荐:" + mTitle + " @光环的游戏日常 ";
} else if (ShareUtils.ShareEntrance.video.name().equals(mShareType) ||
ShareUtils.ShareEntrance.communityArticle.name().equals(mShareType) ||
ShareUtils.ShareEntrance.askNormal.name().equals(mShareType)) {
textObject.text = mTitle + shareUrl + "@光环的游戏日常)";
} else {
textObject.text = mTitle + " @光环的游戏日常 ";
}
ImageObject imageObject = new ImageObject();
imageObject.setImageData(bgBitmap);//设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。
/*WebpageObject webObject = new WebpageObject();
webObject.identify = UUID.randomUUID().toString();
webObject.title = "";
webObject.description = getString(R.string.app_name);
webObject.defaultText = getString(R.string.app_name);
webObject.actionUrl = shareUrl;
ByteArrayOutputStream os = null;
try {
os = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, os);
webObject.thumbData = os.toByteArray();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}*/
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();//初始化微博的分享消息
weiboMessage.textObject = textObject;
if (!ShareUtils.ShareEntrance.video.name().equals(mShareType)) {
weiboMessage.imageObject = imageObject;
}
// weiboMessage.mediaObject = webObject;
mWBAPI.shareMessage(WeiBoShareActivity.this, weiboMessage, false);
}
@Override
public void onSecond(Boolean aBoolean) {
}
});
}
private void shareImage() {
// base64转bitmap
byte[] decode = Base64.decode(ImageViewerActivity.base64Image, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);
// 转完后重新置位
ImageViewerActivity.base64Image = "";
Bitmap compressBitmap = compressBitmap(bitmap);
ImageObject imageObject = new ImageObject();
imageObject.setImageData(compressBitmap);
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();//初始化微博的分享消息
weiboMessage.imageObject = imageObject;
mWBAPI.shareMessage(WeiBoShareActivity.this, weiboMessage, false);
}
public Bitmap compressBitmap(Bitmap bitmap) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
float zoom = (float) Math.sqrt(500 * 1024 / (float) bos.toByteArray().length);
Matrix matrix = new Matrix();
matrix.setScale(zoom, zoom);
Bitmap result = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
bos.reset();
result.compress(Bitmap.CompressFormat.JPEG, 100, bos);
while (bos.toByteArray().length > 500 * 1024) {
System.out.println(bos.toByteArray().length);
matrix.setScale(0.9f, 0.9f);
result = Bitmap.createBitmap(result, 0, 0, result.getWidth(), result.getHeight(), matrix, true);
bos.reset();
result.compress(Bitmap.CompressFormat.JPEG, 100, bos);
}
return result;
}
@Override
public void onComplete() {
Utils.toast(this, com.gh.gamecenter.common.R.string.share_success_hint);
if ("NORMAL".equals(mShareStyle)) {
com.gh.gamecenter.common.utils.LogUtils.uploadShareResult(ShareUtils.shareType, ShareUtils.shareEntrance.getName(), "success",
ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId);
EventBus.getDefault().post(new EBShare(ShareUtils.shareEntrance, "新浪微博"));
if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.inviteFriends) {
IntegralLogHelper.INSTANCE.logInviteResult("成功", "微博");
}
if (ShareUtils.additionalParams != null && (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.communityArticle ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video)) {
com.gh.gamecenter.common.utils.NewLogUtils.logShareResult(ShareUtils.additionalParams, true);
SensorsBridge.trackArticleShareResult(
ShareUtils.additionalParams.getCustomerType(),
ShareUtils.additionalParams.getContentId(),
ShareUtils.additionalParams.getBbsId(),
ShareUtils.additionalParams.getBbsType(),
ShareUtils.additionalParams.getActivityTagName(),
ShareUtils.additionalParams.getGameForumType(),
ShareUtils.additionalParams.getContentType(),
"新浪微博",
"分享成功"
);
} else if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.gameCollection) {
com.gh.gamecenter.common.utils.NewLogUtils.logViewOrClickGameCollectionDetail(
"click_game_collect_detail_favorite_success",
ShareUtils.shareEntity.getShareTitle(),
ShareUtils.resourceId,
"新浪微博"
);
SensorsBridge.trackEvent(
"GameCollectDetailShareClickSuccess",
"game_collect_title", ShareUtils.shareEntity.getShareTitle(),
"game_collect_id", ShareUtils.resourceId,
"share_type", "新浪微博"
);
}
} else {
IntegralLogHelper.INSTANCE.logInviteResult("成功", "微博");
}
finish();
}
@Override
public void onError(UiError uiError) {
Utils.toast(this, com.gh.gamecenter.common.R.string.share_fail_hint);
if ("NORMAL".equals(mShareStyle)) {
com.gh.gamecenter.common.utils.LogUtils.uploadShareResult(ShareUtils.shareType, ShareUtils.shareEntrance.getName(), "fail",
ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId);
if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.inviteFriends) {
IntegralLogHelper.INSTANCE.logInviteResult("失败", "微博");
}
if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.communityArticle ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video) {
com.gh.gamecenter.common.utils.NewLogUtils.logShareResult(ShareUtils.additionalParams, false);
}
if(ShareUtils.additionalParams != null && (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video
|| ShareUtils.shareEntrance == ShareUtils.ShareEntrance.communityArticle
|| ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal))
{
SensorsBridge.trackArticleShareResult(
ShareUtils.additionalParams.getCustomerType(),
ShareUtils.additionalParams.getContentId(),
ShareUtils.additionalParams.getBbsId(),
ShareUtils.additionalParams.getBbsType(),
ShareUtils.additionalParams.getActivityTagName(),
ShareUtils.additionalParams.getGameForumType(),
ShareUtils.additionalParams.getContentType(),
"新浪微博",
"分享失败"
);
}
} else {
IntegralLogHelper.INSTANCE.logInviteResult("失败", "微博");
}
finish();
}
@Override
public void onCancel() {
Utils.toast(this, com.gh.gamecenter.common.R.string.share_cancel_hint);
if ("NORMAL".equals(mShareStyle)) {
com.gh.gamecenter.common.utils.LogUtils.uploadShareResult(ShareUtils.shareType, ShareUtils.shareEntrance.getName(), "cancel",
ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId);
if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.inviteFriends) {
IntegralLogHelper.INSTANCE.logInviteResult("取消", "微博");
}
if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.communityArticle ||
ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video) {
com.gh.gamecenter.common.utils.NewLogUtils.logShareResult(ShareUtils.additionalParams, false);
}
} else {
IntegralLogHelper.INSTANCE.logInviteResult("取消", "微博");
}
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mAppProvider != null) {
mAppProvider.setDisableSplashAdTemporarily(false);
}
}
}