解决邀请好友过程中无法保存海报的问题

This commit is contained in:
lyr
2021-03-30 14:40:37 +08:00
parent 76cca46015
commit 0c16ae5f3f

View File

@ -8,6 +8,7 @@ import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
@ -71,6 +72,7 @@ public class MessageShareUtils {
private String picName;
private ShareWay shareWay;
private boolean isFromInviteFriends = false;
private String mWriteBitmapPath;
private String[] mArrLabel = {"微信好友", "朋友圈", "QQ好友", "QQ空间", "保存"};
@ -154,6 +156,12 @@ public class MessageShareUtils {
mTencent = Tencent.createInstance(Config.TENCENT_APPID, context); //初始化QQ分享
mIWXAPI = WXAPIFactory.createWXAPI(context, Config.WECHAT_APPID); //初始化微信分享
mContext = context.getApplicationContext();
// 安卓11无法访问Android/data目录
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
mWriteBitmapPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ShareImg/";
} else {
mWriteBitmapPath = context.getExternalCacheDir().getPath() + "/ShareImg/";
}
}
public static MessageShareUtils getInstance(Context context) {
@ -264,7 +272,7 @@ public class MessageShareUtils {
this.shareBm = bitmap;
// 保存图片
File file = new File(activity.getExternalCacheDir().getPath() + "/ShareImg");
File file = new File(mWriteBitmapPath);
if (!file.isDirectory()) {
file.delete();
file.mkdirs();
@ -306,7 +314,7 @@ public class MessageShareUtils {
Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
QQShare.SHARE_TO_QQ_TYPE_IMAGE);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, mContext.getExternalCacheDir().getPath() + "/ShareImg/" + picName);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, mWriteBitmapPath + picName);
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, mContext.getString(R.string.app_name));
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
@ -326,7 +334,7 @@ public class MessageShareUtils {
Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
QQShare.SHARE_TO_QQ_TYPE_IMAGE);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, mContext.getExternalCacheDir().getPath() + "/ShareImg/" + picName);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, mWriteBitmapPath + picName);
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, mContext.getString(R.string.app_name));
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
@ -351,7 +359,7 @@ public class MessageShareUtils {
//官方分享
WXImageObject imgObj = new WXImageObject();
imgObj.setImagePath(mContext.getExternalCacheDir().getPath() + "/ShareImg/" + picName);
imgObj.setImagePath(mWriteBitmapPath + picName);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;
@ -386,7 +394,7 @@ public class MessageShareUtils {
}
WXImageObject imgObj = new WXImageObject();
imgObj.setImagePath(mContext.getExternalCacheDir().getPath() + "/ShareImg/" + picName);
imgObj.setImagePath(mWriteBitmapPath + picName);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;