Browse Source

添加H5分享复制链接的逻辑

Pq 2 years ago
parent
commit
1bca0133bd

+ 34 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/WebParamsUtils.java

@@ -0,0 +1,34 @@
+package com.cooleshow.base.utils;
+
+import android.text.TextUtils;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+/**
+ * Author by pq, Date on 2022/11/4.
+ */
+public class WebParamsUtils {
+    public static boolean isCopyLink(JSONObject jsonObject) {
+        try {
+            JSONArray button = (JSONArray) jsonObject.opt("button");
+            if (button != null && button.length() > 0) {
+                String s = (String) button.get(0);
+                return TextUtils.equals(s, "copy");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    public static String getShareUrl(JSONObject jsonObject) {
+        try {
+            String url =jsonObject.optString("url");
+            return url;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+}

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_share_copy_link.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_share_copy_link.png


+ 11 - 0
student/src/main/java/com/cooleshow/student/ui/web/AccompanyFragment.java

@@ -48,6 +48,7 @@ import com.cooleshow.base.recorder.Recorder;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.EncodeUtils;
 import com.cooleshow.base.utils.EncodeUtils;
 import com.cooleshow.base.utils.HeadsetPlugListener;
 import com.cooleshow.base.utils.HeadsetPlugListener;
 import com.cooleshow.base.utils.HeadsetPlugReceiver;
 import com.cooleshow.base.utils.HeadsetPlugReceiver;
@@ -56,6 +57,7 @@ import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.websocket.JWebSocketClient;
 import com.cooleshow.base.websocket.JWebSocketClient;
 import com.cooleshow.base.widgets.BaseDialog;
 import com.cooleshow.base.widgets.BaseDialog;
 import com.cooleshow.base.widgets.CommonDialog;
 import com.cooleshow.base.widgets.CommonDialog;
@@ -1416,6 +1418,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 mShareAction.open();
                 mShareAction.open();
             } else {
             } else {
                 mImageBase64 = content.getString("image");
                 mImageBase64 = content.getString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
@@ -1427,6 +1430,11 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                                         //分享群聊
                                         //分享群聊
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                                 .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
                                                 .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
                                     }
                                     }
                                 } else {
                                 } else {
                                     if (!UMShareAPI.get(Utils.getApp()).isInstall(getActivity(), share_media)) {
                                     if (!UMShareAPI.get(Utils.getApp()).isInstall(getActivity(), share_media)) {
@@ -1445,6 +1453,9 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                             }
                             }
                         });
                         });
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
             }
             }
         } catch (JSONException e) {
         } catch (JSONException e) {

+ 14 - 3
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -52,11 +52,13 @@ import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -445,6 +447,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
 
             if ("image".equals(content.optString("type"))) {
             if ("image".equals(content.optString("type"))) {
                 mImageBase64 = content.optString("image");
                 mImageBase64 = content.optString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
@@ -456,6 +459,11 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                                         //分享群聊
                                         //分享群聊
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                                 .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
                                                 .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
                                     }
                                     }
                                 } else {
                                 } else {
                                     if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlActivity.this, share_media)) {
                                     if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlActivity.this, share_media)) {
@@ -474,6 +482,9 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                             }
                             }
                         });
                         });
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
             } else if ("video".equals(content.optString("type"))) {
             } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
                 String videoUrl = content.optString("video");
@@ -1167,11 +1178,11 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             }
             }
         } else if (requestCode == REQUEST_CODE_FILE_CHOOSER) {
         } else if (requestCode == REQUEST_CODE_FILE_CHOOSER) {
             Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
             Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
-            if(result == null){
+            if (result == null) {
                 //兼容有些手机从相册选择的视频拿不到uri的问题,比如华为p40
                 //兼容有些手机从相册选择的视频拿不到uri的问题,比如华为p40
-                if(data!=null && data.getClipData()!=null){
+                if (data != null && data.getClipData() != null) {
                     ClipData clipData = data.getClipData();
                     ClipData clipData = data.getClipData();
-                    if(clipData.getItemAt(0)!=null){
+                    if (clipData.getItemAt(0) != null) {
                         result = clipData.getItemAt(0).getUri();
                         result = clipData.getItemAt(0).getUri();
                     }
                     }
                 }
                 }

+ 44 - 13
student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java

@@ -41,6 +41,7 @@ import androidx.annotation.Nullable;
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.bean.WxPayResult;
@@ -50,11 +51,13 @@ import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -123,6 +126,7 @@ import okhttp3.ResponseBody;
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
 public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
+    private static final int SHARE_CHAT_REQUEST_CODE = 501;
     public static final String TAG = "HtmlActivity";
     public static final String TAG = "HtmlActivity";
     private IWXAPI api;
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
     private static final int SDK_PAY_FLAG = 1;
@@ -143,6 +147,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     ProgressBar progressBar;
     ProgressBar progressBar;
     RelativeLayout rl_activity_html;
     RelativeLayout rl_activity_html;
     LinearLayout ll_activity_html;
     LinearLayout ll_activity_html;
+    private String mImageBase64;
 
 
     @Override
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -428,30 +433,49 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         JSONObject content = null;
         JSONObject content = null;
         try {
         try {
             content = jsonObject.getJSONObject("content");
             content = jsonObject.getJSONObject("content");
+
             String shareTitle = content.getString("title");
             String shareTitle = content.getString("title");
             String shareDesc = content.getString("desc");
             String shareDesc = content.getString("desc");
+
             if ("image".equals(content.optString("type"))) {
             if ("image".equals(content.optString("type"))) {
-                String imageBase64 = content.optString("image");
+                mImageBase64 = content.optString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlHorizontalScreenActivity.this).setDisplayList(
                 mShareAction = new ShareAction(HtmlHorizontalScreenActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                if (!UMShareAPI.get(Utils.getApp()).isInstall(HtmlHorizontalScreenActivity.this, share_media)) {
-                                    ToastUtil.getInstance().show(Utils.getApp(), "应用未安装,分享失败");
-                                    return;
+                                if (share_media == null) {
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(HtmlHorizontalScreenActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
+                                    }
+                                } else {
+                                    if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlHorizontalScreenActivity.this, share_media)) {
+                                        ToastUtil.getInstance().show(getApplicationContext(), "应用未安装,分享失败");
+                                        return;
+                                    }
+                                    UMImage image = new UMImage(HtmlHorizontalScreenActivity.this, MyFileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(HtmlHorizontalScreenActivity.this).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
                                 }
                                 }
-                                UMImage image = new UMImage(HtmlHorizontalScreenActivity.this, MyFileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(HtmlHorizontalScreenActivity.this).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
-
                             }
                             }
                         });
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
             } else if ("video".equals(content.optString("type"))) {
             } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
                 String videoUrl = content.optString("video");
@@ -474,7 +498,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                 mShareAction.open();
                 mShareAction.open();
             }
             }
         } catch (JSONException e) {
         } catch (JSONException e) {
-            e.printStackTrace();
+
         }
         }
     }
     }
 
 
@@ -1068,6 +1092,13 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         super.onActivityResult(requestCode, resultCode, data);
         super.onActivityResult(requestCode, resultCode, data);
 
 
         UMShareAPI.get(HtmlHorizontalScreenActivity.this).onActivityResult(requestCode, resultCode, data);
         UMShareAPI.get(HtmlHorizontalScreenActivity.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) {
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
             try {
                 JSONObject jsonObject = new JSONObject();
                 JSONObject jsonObject = new JSONObject();

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/AccompanyFragment.java

@@ -49,6 +49,7 @@ import com.cooleshow.base.recorder.Recorder;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.EncodeUtils;
 import com.cooleshow.base.utils.EncodeUtils;
 import com.cooleshow.base.utils.HeadsetPlugListener;
 import com.cooleshow.base.utils.HeadsetPlugListener;
 import com.cooleshow.base.utils.HeadsetPlugReceiver;
 import com.cooleshow.base.utils.HeadsetPlugReceiver;
@@ -56,6 +57,7 @@ import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.websocket.JWebSocketClient;
 import com.cooleshow.base.websocket.JWebSocketClient;
 import com.cooleshow.base.widgets.BaseDialog;
 import com.cooleshow.base.widgets.BaseDialog;
 import com.cooleshow.base.widgets.CommonDialog;
 import com.cooleshow.base.widgets.CommonDialog;
@@ -1420,6 +1422,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 mShareAction.open();
                 mShareAction.open();
             } else {
             } else {
                 mImageBase64 = content.getString("image");
                 mImageBase64 = content.getString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
@@ -1431,6 +1434,11 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                                         //分享群聊
                                         //分享群聊
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                                 .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
                                                 .navigation(getActivity(), SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
                                     }
                                     }
                                 } else {
                                 } else {
                                     if (!UMShareAPI.get(Utils.getApp()).isInstall(getActivity(), share_media)) {
                                     if (!UMShareAPI.get(Utils.getApp()).isInstall(getActivity(), share_media)) {
@@ -1448,6 +1456,9 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                             }
                             }
                         });
                         });
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
             }
             }
         } catch (JSONException e) {
         } catch (JSONException e) {

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -52,11 +52,13 @@ import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -448,6 +450,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
 
             if ("image".equals(content.optString("type"))) {
             if ("image".equals(content.optString("type"))) {
                 mImageBase64 = content.optString("image");
                 mImageBase64 = content.optString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                 mShareAction = new ShareAction(HtmlActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
@@ -459,6 +462,11 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                                         //分享群聊
                                         //分享群聊
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                         ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
                                                 .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
                                                 .navigation(HtmlActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
                                     }
                                     }
                                 } else {
                                 } else {
                                     if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlActivity.this, share_media)) {
                                     if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlActivity.this, share_media)) {
@@ -476,6 +484,9 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                             }
                             }
                         });
                         });
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
                 mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
             } else if ("video".equals(content.optString("type"))) {
             } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
                 String videoUrl = content.optString("video");

+ 45 - 14
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java

@@ -41,6 +41,7 @@ import androidx.annotation.Nullable;
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.bean.WxPayResult;
@@ -50,10 +51,12 @@ import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.ClipboardUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.UriUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -122,6 +125,7 @@ import okhttp3.ResponseBody;
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
 public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
+    private static final int SHARE_CHAT_REQUEST_CODE = 501;
     public static final String TAG = "HtmlActivity";
     public static final String TAG = "HtmlActivity";
     private IWXAPI api;
     private IWXAPI api;
     private static final int SDK_PAY_FLAG = 1;
     private static final int SDK_PAY_FLAG = 1;
@@ -141,6 +145,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     ProgressBar progressBar;
     ProgressBar progressBar;
     RelativeLayout rl_activity_html;
     RelativeLayout rl_activity_html;
     LinearLayout ll_activity_html;
     LinearLayout ll_activity_html;
+    private String mImageBase64;
 
 
     @Override
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -426,32 +431,51 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         JSONObject content = null;
         JSONObject content = null;
         try {
         try {
             content = jsonObject.getJSONObject("content");
             content = jsonObject.getJSONObject("content");
+
             String shareTitle = content.getString("title");
             String shareTitle = content.getString("title");
             String shareDesc = content.getString("desc");
             String shareDesc = content.getString("desc");
+
             if ("image".equals(content.optString("type"))) {
             if ("image".equals(content.optString("type"))) {
-                String imageBase64 = content.optString("image");
+                mImageBase64 = content.optString("image");
+                String shareUrl = WebParamsUtils.getShareUrl(content);
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(HtmlHorizontalScreenActivity.this).setDisplayList(
                 mShareAction = new ShareAction(HtmlHorizontalScreenActivity.this).setDisplayList(
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
-                                if (!UMShareAPI.get(Utils.getApp()).isInstall(HtmlHorizontalScreenActivity.this, share_media)) {
-                                    ToastUtil.getInstance().show(Utils.getApp(), "应用未安装,分享失败");
-                                    return;
+                                if (share_media == null) {
+                                    if (TextUtils.equals(snsPlatform.mKeyword, "chat")) {
+                                        //分享群聊
+                                        ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_SELECT_CONTACT)
+                                                .navigation(HtmlHorizontalScreenActivity.this, SHARE_CHAT_REQUEST_CODE);
+                                    } else if (TextUtils.equals(snsPlatform.mKeyword, "copy")) {
+                                        if (!TextUtils.isEmpty(shareUrl)) {
+                                            ClipboardUtils.copyText(shareUrl);
+                                            ToastUtil.getInstance().showShort("复制成功");
+                                        }
+                                    }
+                                } else {
+                                    if (!UMShareAPI.get(getApplicationContext()).isInstall(HtmlHorizontalScreenActivity.this, share_media)) {
+                                        ToastUtil.getInstance().show(getApplicationContext(), "应用未安装,分享失败");
+                                        return;
+                                    }
+                                    UMImage image = new UMImage(HtmlHorizontalScreenActivity.this, MyFileUtils.base64ToBitmap(mImageBase64.split(",")[1]));//bitmap文件
+                                    image.setThumb(image);
+                                    image.compressStyle = UMImage.CompressStyle.SCALE;
+                                    new ShareAction(HtmlHorizontalScreenActivity.this).withMedia(image)
+                                            .setPlatform(share_media)
+                                            .setCallback(mShareListener)
+                                            .share();
                                 }
                                 }
-                                UMImage image = new UMImage(HtmlHorizontalScreenActivity.this, MyFileUtils.base64ToBitmap(imageBase64.split(",")[1]));//bitmap文件
-                                image.setThumb(image);
-                                image.compressStyle = UMImage.CompressStyle.SCALE;
-                                new ShareAction(HtmlHorizontalScreenActivity.this).withMedia(image)
-                                        .setPlatform(share_media)
-                                        .setCallback(mShareListener)
-                                        .share();
-
                             }
                             }
                         });
                         });
+                mShareAction.addButton("群聊", "chat", "icon_share_chat_group", "icon_share_chat_group");
+                if (WebParamsUtils.isCopyLink(content)) {
+                    mShareAction.addButton("复制链接", "copy", "icon_share_copy_link", "icon_share_copy_link");
+                }
                 mShareAction.open();
                 mShareAction.open();
-            } else if ("video".equals(content.optString("type")) ){
+            } else if ("video".equals(content.optString("type"))) {
                 String videoUrl = content.optString("video");
                 String videoUrl = content.optString("video");
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(this).setDisplayList(
                 mShareAction = new ShareAction(this).setDisplayList(
@@ -472,7 +496,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                 mShareAction.open();
                 mShareAction.open();
             }
             }
         } catch (JSONException e) {
         } catch (JSONException e) {
-            e.printStackTrace();
+
         }
         }
     }
     }
 
 
@@ -1065,6 +1089,13 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         super.onActivityResult(requestCode, resultCode, data);
         super.onActivityResult(requestCode, resultCode, data);
 
 
         UMShareAPI.get(HtmlHorizontalScreenActivity.this).onActivityResult(requestCode, resultCode, data);
         UMShareAPI.get(HtmlHorizontalScreenActivity.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) {
         if (requestCode == ADD_ACCOMPANIMENT_CODE) {
             try {
             try {
                 JSONObject jsonObject = new JSONObject();
                 JSONObject jsonObject = new JSONObject();