浏览代码

增加分享群聊功能

Pq 3 年之前
父节点
当前提交
eb529cf814

二进制
BaseLibrary/src/main/res/drawable-xhdpi/icon_share_chat_group.png


二进制
BaseLibrary/src/main/res/drawable-xxhdpi/icon_share_chat_group.png


+ 21 - 0
student/src/main/java/com/cooleshow/student/helper/ShareHelper.java

@@ -6,6 +6,7 @@ import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.provider.MediaStore;
+import android.text.TextUtils;
 import android.util.Base64;
 import android.util.Log;
 
@@ -27,6 +28,7 @@ import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.IMCenter;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 import io.rong.imlib.IRongCallback;
 import io.rong.imlib.RongIMClient;
 import io.rong.imlib.model.Conversation;
@@ -188,4 +190,23 @@ public class ShareHelper {
     public interface ResultCallBack {
         void onResult(boolean isSuccess);
     }
+
+    public static void parseShareContactData(String base64,Intent data) {
+        String targetId = data.getStringExtra("targetId");
+        int conversationValue = data.getIntExtra("conversation", -1);
+        if (!TextUtils.isEmpty(base64)) {
+            Conversation.ConversationType conversationType = OpenChatHelper.getConversationType(conversationValue);
+            shareImgToChatGroup(base64, targetId, conversationType, new ShareHelper.ResultCallBack() {
+                @Override
+                public void onResult(boolean isSuccess) {
+                    if (isSuccess) {
+                        ToastUtil.getInstance().showShort("分享成功");
+                    } else {
+                        ToastUtil.getInstance().showShort("分享失败");
+                    }
+//                    sendCallBack("shareAchievements", "", true);
+                }
+            });
+        }
+    }
 }

+ 10 - 0
student/src/main/java/com/cooleshow/student/ui/web/AccompanyActivity.java

@@ -2,6 +2,7 @@ package com.cooleshow.student.ui.web;
 
 import static com.cooleshow.base.common.WebConstants.WEB_URL;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Handler;
@@ -318,6 +319,15 @@ public class AccompanyActivity extends BaseMVPActivity<ActivityAccompanyBinding,
     @Override
     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == Activity.RESULT_OK) {
+            if (requestCode == AccompanyFragment.SHARE_CHAT_REQUEST_CODE) {
+                //选择群聊
+                if (accompanyFragment != null) {
+                    accompanyFragment.parseShareContactData(data);
+                }
+                return;
+            }
+        }
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
                 JSONObject jsonObject = new JSONObject();

+ 31 - 9
student/src/main/java/com/cooleshow/student/ui/web/AccompanyFragment.java

@@ -37,6 +37,7 @@ import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
@@ -47,6 +48,7 @@ import com.cooleshow.base.recorder.AudioRecordConfig;
 import com.cooleshow.base.recorder.MsRecorder;
 import com.cooleshow.base.recorder.PullTransport;
 import com.cooleshow.base.recorder.Recorder;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.HeadsetPlugListener;
@@ -67,6 +69,7 @@ import com.cooleshow.student.bean.alipay.AuthResult;
 import com.cooleshow.student.bean.alipay.PayResult;
 import com.cooleshow.student.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.student.databinding.FragmentAccompanyBinding;
+import com.cooleshow.student.helper.ShareHelper;
 import com.cooleshow.student.presenter.web.AccompanyPresenter;
 import com.cooleshow.student.widgets.FileUtils;
 import com.cooleshow.student.widgets.LollipopFixedWebView;
@@ -106,6 +109,7 @@ import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;
 import java.util.Map;
 
+import androidx.annotation.Nullable;
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
 import io.reactivex.rxjava3.annotations.NonNull;
 import io.reactivex.rxjava3.core.Observable;
@@ -114,6 +118,8 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.utils.helper.OpenChatHelper;
+import io.rong.imlib.model.Conversation;
 import okhttp3.ResponseBody;
 
 /**
@@ -127,7 +133,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
     private static final int SDK_AUTH_FLAG = 2;
-
+    public static final int SHARE_CHAT_REQUEST_CODE = 501;
     FrameLayout viewParent;
     WebView webView;
     private UMShareListener mShareListener;
@@ -136,6 +142,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     private JWebSocketClient webSocketClient;
     private ShareAction mShareAction;
     private URI webSocketUri = URI.create("BuildConfig.BASE_STU_SOCKET_URL");
+    private String mImageBase64;
 
     public static AccompanyFragment newInstance(String url) {
         AccompanyFragment fragment = new AccompanyFragment();
@@ -1363,23 +1370,32 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                         });
                 mShareAction.open();
             } else {
-                String imageBase64 = content.getString("image");
+                mImageBase64 = content.getString("image");
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                UMImage image = new UMImage(mContext, FileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(getActivity()).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
+                                if(share_media == null){
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
+                                    }
+                                }else{
+                                    UMImage image = new UMImage(mContext, FileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(getActivity()).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
+                                }
 
                             }
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.open();
             }
         } catch (JSONException e) {
@@ -2181,6 +2197,12 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 
     }
 
+    public void parseShareContactData(Intent data) {
+        //分享至群聊
+        ShareHelper.parseShareContactData(mImageBase64, data);
+    }
+
+
     /**
      * 发送支付结果
      *

+ 32 - 11
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -41,6 +41,7 @@ import androidx.annotation.Nullable;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.bean.WxPayResult;
@@ -117,11 +118,13 @@ import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.utils.helper.OpenChatHelper;
+import io.rong.imlib.model.Conversation;
 import okhttp3.ResponseBody;
 
 @Route(path = RouterPath.WebCenter.ACTIVITY_HTML)
 public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
+    private static final int SHARE_CHAT_REQUEST_CODE = 501;
     public static final String TAG = "HtmlActivity";
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
@@ -140,6 +143,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     ProgressBar progressBar;
     RelativeLayout rl_activity_html;
     LinearLayout ll_activity_html;
+    private String mImageBase64;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -322,7 +326,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     private void initWebView() {
         //声明WebSettings子类
         WebSettings webSettings = webView.getSettings();
-        webSettings.setUserAgentString(webSettings.getUserAgentString() + WebConstants.WEB_UA_PARAMS+ WebConstants.WEB_UA_PARAMS_STUDENT);
+        webSettings.setUserAgentString(webSettings.getUserAgentString() + WebConstants.WEB_UA_PARAMS + WebConstants.WEB_UA_PARAMS_STUDENT);
         webSettings.setGeolocationDatabasePath(getApplicationContext().getFilesDir().getPath());
         webSettings.setGeolocationEnabled(true);
         webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
@@ -441,25 +445,34 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             String shareDesc = content.optString("desc");
 
             if ("image".equals(content.optString("type"))) {
-                String imageBase64 = content.optString("image");
+                mImageBase64 = content.optString("image");
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                UMImage image = new UMImage(HtmlActivity.this, FileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(HtmlActivity.this).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
+                                if (share_media == null) {
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    }
+                                } else {
+                                    UMImage image = new UMImage(HtmlActivity.this, FileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(HtmlActivity.this).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
+                                }
 
                             }
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.open();
-            } else if ("video".equals(content.optString("type")) ){
+            } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(this).setDisplayList(
@@ -1096,8 +1109,16 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     @Override
     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-
         UMShareAPI.get(HtmlActivity.this).onActivityResult(requestCode, resultCode, data);
+
+        if (resultCode == RESULT_OK) {
+            if (requestCode == SHARE_CHAT_REQUEST_CODE) {
+                //选择群聊
+                ShareHelper.parseShareContactData(mImageBase64, data);
+                return;
+            }
+        }
+
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
                 JSONObject jsonObject = new JSONObject();

+ 92 - 0
teacher/src/main/java/com/cooleshow/teacher/helper/ShareHelper.java

@@ -6,6 +6,7 @@ import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.provider.MediaStore;
+import android.text.TextUtils;
 import android.util.Base64;
 import android.util.Log;
 
@@ -27,6 +28,7 @@ import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.IMCenter;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 import io.rong.imlib.IRongCallback;
 import io.rong.imlib.RongIMClient;
 import io.rong.imlib.model.Conversation;
@@ -86,6 +88,66 @@ public class ShareHelper {
                 });
     }
 
+    public static void shareImgToChatGroup(Bitmap bitmap, String targetId, Conversation.ConversationType conversationType, ResultCallBack resultCallBack) {
+        Observable.create(new ObservableOnSubscribe<String>() {
+            @Override
+            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
+                File file = saveImgToLocalFile(bitmap);
+                Message imageMessage = createImageMessage(file, targetId, conversationType);
+                IMCenter.getInstance().sendMessage(imageMessage, null, null, new IRongCallback.ISendMessageCallback() {
+                    @Override
+                    public void onAttached(Message message) {
+
+                    }
+
+                    @Override
+                    public void onSuccess(Message message) {
+                        Log.i("pq", "message send success");
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Message message, RongIMClient.ErrorCode errorCode) {
+                        Log.i("pq", "message send onError:" + errorCode);
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+                });
+                emitter.onNext("");
+            }
+        }).subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<String>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(String s) {
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        e.printStackTrace();
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
     public static void shareImgToChatGroup(String base64, String targetId, Conversation.ConversationType conversationType, ResultCallBack resultCallBack) {
         Observable.create(new ObservableOnSubscribe<String>() {
             @Override
@@ -175,6 +237,17 @@ public class ShareHelper {
         return new File(file.getAbsolutePath());
     }
 
+    private static File saveImgToLocalFile(Bitmap bitmap) {
+        File parentFile = new File(FileUtils.getCacheDir(Utils.getApp()) + File.separator + "share");
+        if (!parentFile.exists()) {
+            parentFile.mkdirs();
+        }
+        String targetFileName = "IMG_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()) + ".png";
+        File file = new File(parentFile, targetFileName);
+        FileUtils.saveImageToGallery(bitmap, file.getAbsolutePath());
+        return new File(file.getAbsolutePath());
+    }
+
     private static Message createImageMessage(File file, String targetId, Conversation.ConversationType conversationType) {
         Uri uri = Uri.fromFile(file);
         ImageMessage imageMessage = ImageMessage.obtain(uri, uri);
@@ -185,6 +258,25 @@ public class ShareHelper {
         return message;
     }
 
+    public static void parseShareContactData(String base64, Intent data) {
+        String targetId = data.getStringExtra("targetId");
+        int conversationValue = data.getIntExtra("conversation", -1);
+        if (!TextUtils.isEmpty(base64)) {
+            Conversation.ConversationType conversationType = OpenChatHelper.getConversationType(conversationValue);
+            shareImgToChatGroup(base64, targetId, conversationType, new ShareHelper.ResultCallBack() {
+                @Override
+                public void onResult(boolean isSuccess) {
+                    if (isSuccess) {
+                        ToastUtil.getInstance().showShort("分享成功");
+                    } else {
+                        ToastUtil.getInstance().showShort("分享失败");
+                    }
+//                    sendCallBack("shareAchievements", "", true);
+                }
+            });
+        }
+    }
+
     public interface ResultCallBack {
         void onResult(boolean isSuccess);
     }

+ 0 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -284,7 +284,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_COURSE)
                         .navigation();
                 break;
-            //商品订单
             case R.id.iv_goods_order:
                 if (UiUtils.isFastClick()) {
                     return;

+ 53 - 10
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java

@@ -1,5 +1,6 @@
 package com.cooleshow.teacher.ui.score;
 
+import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.Bitmap;
 import android.os.Bundle;
@@ -12,8 +13,10 @@ import androidx.fragment.app.Fragment;
 import androidx.viewpager.widget.ViewPager;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.widgets.poplist.PopMenuBean;
@@ -25,10 +28,10 @@ import com.cooleshow.teacher.bean.QuerySubjectBean;
 import com.cooleshow.teacher.constants.TeacherInfoConstants;
 import com.cooleshow.teacher.contract.MineScoreActContract;
 import com.cooleshow.teacher.databinding.ActivityMineScoreBinding;
+import com.cooleshow.teacher.helper.ShareHelper;
 import com.cooleshow.teacher.presenter.score.MineScoreActPresenter;
 import com.cooleshow.teacher.ui.web.HtmlActivity;
 import com.cooleshow.teacher.widgets.DialogUtils;
-import com.cooleshow.teacher.widgets.FileUtils;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.google.android.material.tabs.TabLayout;
 import com.umeng.socialize.ShareAction;
@@ -47,6 +50,8 @@ import java.util.Arrays;
 import java.util.List;
 
 import io.rong.imkit.utils.StatusBarUtil;
+import io.rong.imkit.utils.helper.OpenChatHelper;
+import io.rong.imlib.model.Conversation;
 
 /**
  * 创建日期:2022/5/20 16:34
@@ -56,6 +61,7 @@ import io.rong.imkit.utils.StatusBarUtil;
  */
 @Route(path = RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
 public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding, MineScoreActPresenter> implements MineScoreActContract.MineScoreActView, View.OnClickListener {
+    public static final int SHARE_CHAT_REQUEST_CODE = 500;
     private String currentSubjectId = "";
     private String currentSearchStr = "";
     private TabLayout tabLayout;
@@ -64,6 +70,9 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
     private List<String> auditStatusList = new ArrayList<String>(Arrays.asList("PASS", "DOING", "UNPASS"));
     private List<Fragment> fragments = new ArrayList<>();
     private ArrayList<QuerySubjectBean> subjectBeanList = new ArrayList<>();
+    private ShareAction mShareAction;
+    private UMShareListener mShareListener;
+    private Bitmap targetBitmap;
 
     @Override
     public void onClick(View view) {
@@ -207,23 +216,29 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
         DialogUtils.showScoreShare(this, data, bitmap -> share(bitmap));
     }
 
-    private ShareAction mShareAction;
-    private UMShareListener mShareListener;
-
     private void share(Bitmap bitmap) {
         mShareAction = new ShareAction(MineScoreActivity.this).setDisplayList(
                 SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                 .setShareboardclickCallback(new ShareBoardlistener() {
                     @Override
                     public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                        UMImage image = new UMImage(MineScoreActivity.this, bitmap);
-                        new ShareAction(MineScoreActivity.this).withMedia(image)
-                                .setPlatform(share_media)
-                                .setCallback(mShareListener)
-                                .share();
-
+                        if (share_media == null) {
+                            if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                //分享群聊
+                                MineScoreActivity.this.targetBitmap = bitmap;
+                                ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                        .navigation(MineScoreActivity.this, SHARE_CHAT_REQUEST_CODE);
+                            }
+                        } else {
+                            UMImage image = new UMImage(MineScoreActivity.this, bitmap);
+                            new ShareAction(MineScoreActivity.this).withMedia(image)
+                                    .setPlatform(share_media)
+                                    .setCallback(mShareListener)
+                                    .share();
+                        }
                     }
                 });
+        mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
         mShareAction.open();
     }
 
@@ -299,6 +314,34 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
     }
 
     @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == RESULT_OK) {
+            if (requestCode == SHARE_CHAT_REQUEST_CODE) {
+                //选择群聊
+                if (targetBitmap != null) {
+                    String targetId = data.getStringExtra("targetId");
+                    int conversationValue = data.getIntExtra("conversation", -1);
+                    Conversation.ConversationType conversationType = OpenChatHelper.getConversationType(conversationValue);
+                    ShareHelper.shareImgToChatGroup(targetBitmap, targetId, conversationType, new ShareHelper.ResultCallBack() {
+                        @Override
+                        public void onResult(boolean isSuccess) {
+                            if (isSuccess) {
+                                if (targetBitmap != null) {
+                                    targetBitmap.recycle();
+                                    targetBitmap = null;
+                                }
+                                ToastUtil.getInstance().showShort("分享成功啦");
+                            }
+                        }
+                    });
+                }
+                return;
+            }
+        }
+    }
+
+    @Override
     public void onDestroy() {
         super.onDestroy();
         UMShareAPI.get(MineScoreActivity.this).release();

+ 10 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/AccompanyActivity.java

@@ -1,5 +1,6 @@
 package com.cooleshow.teacher.ui.web;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Handler;
@@ -332,6 +333,15 @@ public class AccompanyActivity extends BaseMVPActivity<ActivityAccompanyBinding,
     @Override
     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == Activity.RESULT_OK) {
+            if (requestCode == AccompanyFragment.SHARE_CHAT_REQUEST_CODE) {
+                //选择群聊
+                if (accompanyFragment != null) {
+                    accompanyFragment.parseShareContactData(data);
+                }
+                return;
+            }
+        }
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
                 JSONObject jsonObject = new JSONObject();

+ 32 - 12
teacher/src/main/java/com/cooleshow/teacher/ui/web/AccompanyFragment.java

@@ -33,6 +33,7 @@ import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
@@ -43,6 +44,7 @@ import com.cooleshow.base.recorder.AudioRecordConfig;
 import com.cooleshow.base.recorder.MsRecorder;
 import com.cooleshow.base.recorder.PullTransport;
 import com.cooleshow.base.recorder.Recorder;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseFragment;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.AppUtils;
@@ -64,6 +66,7 @@ import com.cooleshow.teacher.bean.alipay.PayResult;
 import com.cooleshow.teacher.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.teacher.databinding.FragmentAccompanyBinding;
 import com.cooleshow.teacher.databinding.FragmentMineLayoutBinding;
+import com.cooleshow.teacher.helper.ShareHelper;
 import com.cooleshow.teacher.presenter.main.MinePresenter;
 import com.cooleshow.teacher.presenter.web.AccompanyPresenter;
 import com.cooleshow.teacher.widgets.FileUtils;
@@ -111,6 +114,8 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.utils.helper.OpenChatHelper;
+import io.rong.imlib.model.Conversation;
 import okhttp3.ResponseBody;
 
 /**
@@ -121,6 +126,7 @@ import okhttp3.ResponseBody;
  */
 public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding, AccompanyPresenter> implements JsInterfaceAccomPanyUtils.onGetMethodsListener {
     private final static String TAG = "AccompanyFragmenttag";
+    public static final int SHARE_CHAT_REQUEST_CODE = 501;
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
     private static final int SDK_AUTH_FLAG = 2;
@@ -133,6 +139,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     private JWebSocketClient webSocketClient;
     private ShareAction mShareAction;
     private URI webSocketUri = URI.create("BuildConfig.BASE_STU_SOCKET_URL");
+    private String mImageBase64;
 
     public static AccompanyFragment newInstance(String url) {
         AccompanyFragment fragment = new AccompanyFragment();
@@ -1361,23 +1368,31 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                         });
                 mShareAction.open();
             } else {
-                String imageBase64 = content.getString("image");
+                mImageBase64 = content.getString("image");
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                UMImage image = new UMImage(mContext, FileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(getActivity()).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
-
+                                if (share_media == null) {
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
+                                    }
+                                } else {
+                                    UMImage image = new UMImage(mContext, FileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(getActivity()).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
+                                }
                             }
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.open();
             }
         } catch (JSONException e) {
@@ -1865,14 +1880,14 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     public void savePicture(String base64, String uuid) {
         try {
             com.cooleshow.base.utils.FileUtils.saveBase64ImgToLocalFile(base64);
-            sendSavePicCallBack("savePicture", "success",uuid);
+            sendSavePicCallBack("savePicture", "success", uuid);
         } catch (Exception e) {
-            sendSavePicCallBack("savePicture", "fail",uuid);
+            sendSavePicCallBack("savePicture", "fail", uuid);
             e.printStackTrace();
         }
     }
 
-    private void sendSavePicCallBack(String api, String result,String uuid) {
+    private void sendSavePicCallBack(String api, String result, String uuid) {
         JSONObject jsonObject = new JSONObject();
         JSONObject contentJson = new JSONObject();
         try {
@@ -2179,6 +2194,11 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 
     }
 
+    public void parseShareContactData(Intent data) {
+        //分享至群聊
+        ShareHelper.parseShareContactData(mImageBase64, data);
+    }
+
     /**
      * 发送支付结果
      *

+ 30 - 9
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -42,6 +42,7 @@ import androidx.annotation.Nullable;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.bean.WxPayResult;
@@ -90,6 +91,7 @@ import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
 import com.umeng.socialize.media.UMWeb;
+import com.umeng.socialize.shareboard.ShareBoardConfig;
 import com.umeng.socialize.shareboard.SnsPlatform;
 import com.umeng.socialize.utils.ShareBoardlistener;
 
@@ -115,11 +117,13 @@ import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.utils.helper.OpenChatHelper;
+import io.rong.imlib.model.Conversation;
 import okhttp3.ResponseBody;
 
 @Route(path = RouterPath.WebCenter.ACTIVITY_HTML)
 public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
+    private static final int SHARE_CHAT_REQUEST_CODE = 501;
     public static final String TAG = "HtmlActivity";
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
@@ -139,6 +143,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     ProgressBar progressBar;
     RelativeLayout rl_activity_html;
     LinearLayout ll_activity_html;
+    private String mImageBase64;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -440,23 +445,31 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             String shareDesc = content.getString("desc");
 
             if ("image".equals(content.optString("type"))) {
-                String imageBase64 = content.optString("image");
+                mImageBase64 = content.optString("image");
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                UMImage image = new UMImage(HtmlActivity.this, FileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(HtmlActivity.this).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
-
+                                if (share_media == null) {
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    }
+                                } else {
+                                    UMImage image = new UMImage(HtmlActivity.this, FileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(HtmlActivity.this).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
+                                }
                             }
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.open();
             } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
@@ -1104,6 +1117,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         super.onActivityResult(requestCode, resultCode, data);
 
         UMShareAPI.get(HtmlActivity.this).onActivityResult(requestCode, resultCode, data);
+        if (resultCode == RESULT_OK) {
+            if (requestCode == SHARE_CHAT_REQUEST_CODE) {
+                //选择群聊
+                ShareHelper.parseShareContactData(mImageBase64,data);
+                return;
+            }
+        }
+
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
                 JSONObject jsonObject = new JSONObject();