修复分享内容含 gif 图片时会分享失败的问题

This commit is contained in:
juntao
2020-07-20 11:00:44 +08:00
parent eb80deb413
commit f170abb7ea
4 changed files with 50 additions and 49 deletions

View File

@ -10,6 +10,7 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.media.ThumbnailUtils;
import android.os.Bundle;
import android.text.TextUtils;
@ -24,10 +25,9 @@ import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.facebook.common.references.CloseableReference;
import com.facebook.datasource.DataSource;
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber;
import com.facebook.imagepipeline.image.CloseableImage;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gh.common.constant.Config;
import com.gh.gamecenter.R;
import com.gh.gamecenter.WeiBoShareActivity;
@ -36,6 +36,8 @@ import com.gh.gamecenter.eventbus.EBShare;
import com.lightgame.utils.Utils;
import com.sina.weibo.sdk.WbSdk;
import com.sina.weibo.sdk.auth.AuthInfo;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzoneShare;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
@ -54,9 +56,6 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import static com.gh.common.util.LoginHelper.WEIBO_SCOPE;
/**
@ -336,7 +335,7 @@ public class ShareUtils {
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
loadBitMap(shareIcon, msg, req);
loadBitmapAndShare(shareIcon, msg, req);
if (mShareEntrance != ShareEntrance.shareGh) {
popupWindow.get().dismiss();
}
@ -346,10 +345,10 @@ public class ShareUtils {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
private void loadBitMap(final String iconUrl, final WXMediaMessage msg, final SendMessageToWX.Req req) {
ImageUtils.display(mContext, iconUrl, new BaseBitmapDataSubscriber() {
private void loadBitmapAndShare(final String iconUrl, final WXMediaMessage msg, final SendMessageToWX.Req req) {
ImageUtils.getBitmap(iconUrl, new Target() {
@Override
protected void onNewResultImpl(Bitmap bitmap) {
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
if (mShareEntrance == ShareEntrance.video) {
// 分享类型为视频时裁为正方形
int dimension = Math.min(bitmap.getWidth(), bitmap.getHeight());
@ -367,9 +366,12 @@ public class ShareUtils {
}
@Override
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
public void onBitmapFailed(Drawable errorDrawable) {
Utils.log("分享获取bitmap失败");
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
});
}
@ -497,7 +499,7 @@ public class ShareUtils {
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
loadBitMap(shareIcon, msg, req);
loadBitmapAndShare(shareIcon, msg, req);
if (mShareEntrance != ShareEntrance.shareGh) {
popupWindow.get().dismiss();
}