Parcourir la source

增加隐私权限申请弹窗说明

Pq il y a 1 an
Parent
commit
3763637e81
38 fichiers modifiés avec 556 ajouts et 223 suppressions
  1. 12 32
      BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/scan/ScanActivity.java
  2. 0 1
      BaseLibrary/src/main/java/com/cooleshow/base/utils/PopupUtil.java
  3. 150 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/PermissionTipHelper.java
  4. 59 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/PermissionTipDialog.java
  5. 3 3
      BaseLibrary/src/main/res/anim/top_enter_anim.xml
  6. 4 4
      BaseLibrary/src/main/res/anim/top_exit_anim.xml
  7. 57 0
      BaseLibrary/src/main/res/layout/dialog_permission_tip_layout.xml
  8. 6 0
      BaseLibrary/src/main/res/values/strings.xml
  9. 17 0
      BaseLibrary/src/main/res/values/styles.xml
  10. 9 4
      chatModule/src/main/java/com/cooleshow/chatmodule/ui/ImAppealActivity.java
  11. 8 3
      classRoom/src/main/java/com/dayayuemeng/classroom/helper/OpenClassRoomHelper.java
  12. 7 2
      classRoom/src/main/java/com/dayayuemeng/classroom/ui/StudentNetClassRoomActivity.java
  13. 7 2
      classRoom/src/main/java/com/dayayuemeng/classroom/ui/TeacherNetClassRoomActivity.java
  14. 8 16
      classRoom/src/main/java/com/dayayuemeng/classroom/ui/fragment/NewCustomWhiteBoardFragment.java
  15. 16 8
      institution/src/main/java/com/cooleshow/institution/stu/ui/setting/PersonalSettingActivity.java
  16. 37 38
      live_teaching/src/main/java/com/daya/live_teaching/utils/helper/CourseEnterHelper.java
  17. 5 1
      musicMerge/src/main/java/com/cooleshow/musicmerge/ui/MusicHandleSettingFragment.java
  18. 5 1
      musicMerge/src/main/java/com/cooleshow/musicmerge/ui/work/MyWorkDraftFragment.java
  19. 8 1
      musictuner/src/main/java/com/cooleshow/musictuner/MusicTunerActivity.java
  20. 8 4
      student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java
  21. 2 0
      student/src/main/java/com/cooleshow/student/ui/main/MallFragment.java
  22. 7 17
      student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java
  23. 16 8
      student/src/main/java/com/cooleshow/student/ui/mine/PersonalSettingActivity.java
  24. 2 0
      student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java
  25. 2 0
      student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java
  26. 1 1
      student/src/main/java/com/cooleshow/student/ui/web/WebActivity.java
  27. 8 4
      student/src/main/java/com/cooleshow/student/ui/work/HomeWorkDetailActivity.java
  28. 7 17
      tclive/src/main/java/com/daya/tclive/ui/TCStudentLiveRoomActivity.java
  29. 6 2
      tclive/src/main/java/com/daya/tclive/ui/TCTeacherLiveRoomActivity.java
  30. 9 4
      teacher/src/main/java/com/cooleshow/teacher/ui/live/CreateLiveActivity.java
  31. 2 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MallFragment.java
  32. 7 17
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  33. 16 8
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalSettingActivity.java
  34. 22 12
      teacher/src/main/java/com/cooleshow/teacher/ui/minestyle/MineStylePageActivity.java
  35. 12 8
      teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java
  36. 2 0
      teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java
  37. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/web/WebActivity.java
  38. 8 4
      usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/FeedBackActivity.java

+ 12 - 32
BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/scan/ScanActivity.java

@@ -23,7 +23,9 @@ import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.luck.picture.lib.PictureSelector;
 import com.luck.picture.lib.config.PictureConfig;
@@ -122,35 +124,27 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
     }
 
     private void checkCameraPermission() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         initQrScan();
                     } else {
-                        DialogUtil.showInCenter(getSupportFragmentManager(), com.cooleshow.base.R.layout.common_popu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(com.cooleshow.base.R.id.tv_title);
-                            TextView tvContent = holder.getView(com.cooleshow.base.R.id.tv_content);
-                            TextView btncancel = holder.getView(com.cooleshow.base.R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(com.cooleshow.base.R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText("扫描二维码需要相机权限,去设置?");
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(this);
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","扫描二维码需要相机权限,去设置?");
                     }
                 });
     }
 
     private void addPermissions() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         PictureSelector.create(this)
                                 .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
@@ -163,21 +157,7 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
                                 .circleDimmedLayer(false)// 是否圆形裁剪 true or false
                                 .forResult(PictureConfig.CHOOSE_REQUEST);
                     } else {
-                        DialogUtil.showInCenter(getSupportFragmentManager(), com.cooleshow.base.R.layout.common_popu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(com.cooleshow.base.R.id.tv_title);
-                            TextView tvContent = holder.getView(com.cooleshow.base.R.id.tv_content);
-                            TextView btncancel = holder.getView(com.cooleshow.base.R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(com.cooleshow.base.R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText("选择照片需要相机、储存权限,去设置?");
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(this);
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","选择照片需要相机、储存权限,去设置?");
                     }
                 });
     }

+ 0 - 1
BaseLibrary/src/main/java/com/cooleshow/base/utils/PopupUtil.java

@@ -189,7 +189,6 @@ public class PopupUtil {
                 //设置PopupWindow布局
                 .setView(popupView)
                 .setOutsideTouchable(touchable)
-                .setAnimationStyle(R.style.TopAnimation)
                 //设置宽高
                 .setWidthAndHeight(width, height)
                 //设置动画

+ 150 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/PermissionTipHelper.java

@@ -0,0 +1,150 @@
+package com.cooleshow.base.utils.helper;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.text.TextUtils;
+
+import com.cooleshow.base.R;
+import com.cooleshow.base.utils.LOG;
+import com.cooleshow.base.utils.ThreadUtils;
+import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.widgets.dialog.PermissionTipDialog;
+import com.tbruyelle.rxpermissions3.RxPermissions;
+
+import androidx.core.app.ActivityCompat;
+import androidx.fragment.app.Fragment;
+
+/**
+ * Author by pq, Date on 2024/3/4.
+ */
+public class PermissionTipHelper {
+
+    private PermissionTipDialog mPermissionTipDialog;
+
+    private Runnable mRunnable;
+
+    private boolean isShow = true;
+
+    private PermissionTipHelper() {
+
+    }
+
+    public static PermissionTipHelper getInstance() {
+        return PermissionTipHelperHolder.mHelper;
+    }
+
+    private static class PermissionTipHelperHolder {
+        private static PermissionTipHelper mHelper = new PermissionTipHelper();
+    }
+
+    public void showTipDialog(Activity activity, String[] permissions) {
+        showTipDialog(activity, permissions, "", "");
+    }
+
+    public void showTipDialog(Fragment context, String[] permissions) {
+        showTipDialog(context.getActivity(), permissions, "", "");
+    }
+
+    public void showTipDialog(Activity activity, String[] permissions, String title, String tip) {
+        if (hasPermissions(activity, permissions)) {
+            return;
+        }
+        isShow = true;
+        mRunnable = new Runnable() {
+            @Override
+            public void run() {
+                LOG.i("showTipDialog:" + isShow);
+                if (!isShow) {
+                    return;
+                }
+                mPermissionTipDialog = new PermissionTipDialog(activity);
+                mPermissionTipDialog.show();
+                String des = !TextUtils.isEmpty(tip) ? tip : getTipFromPermissions(permissions);
+                mPermissionTipDialog.setDes(des);
+            }
+        };
+        //增加延时是因为手写手机有拒绝权限并不再询问的选项,当去请求权限的时候会直接返回拒绝,这样的话就不需要显示这个提示了窗
+        ThreadUtils.runOnUiThreadDelayed(mRunnable, 300);
+    }
+
+    private String getTipFromPermissions(String[] permissions) {
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int i = 0; i < permissions.length; i++) {
+            String permission = permissions[i];
+            String tip = createTip(permission);
+            stringBuilder.append(tip);
+        }
+        return stringBuilder.toString();
+    }
+
+    private String createTip(String permission) {
+        if (TextUtils.equals(permission, Manifest.permission.CAMERA)) {
+            return Utils.getApp().getString(R.string.camera_permission_tip);
+        }
+
+        if (TextUtils.equals(permission, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+            return Utils.getApp().getString(R.string.write_storage_permission_tip);
+        }
+
+        if (TextUtils.equals(permission, Manifest.permission.READ_EXTERNAL_STORAGE)) {
+            return Utils.getApp().getString(R.string.read_storage_permission_tip);
+        }
+
+        if (TextUtils.equals(permission, Manifest.permission.RECORD_AUDIO)) {
+            return Utils.getApp().getString(R.string.record_audio_permission_tip);
+        }
+
+        if (TextUtils.equals(permission, Manifest.permission.CALL_PHONE)) {
+            return Utils.getApp().getString(R.string.call_phone_permission_tip);
+        }
+        return "";
+    }
+
+    private boolean hasPermission(RxPermissions rxPermissions, String[] permissions) {
+        for (int i = 0; i < permissions.length; i++) {
+            String permission = permissions[i];
+            boolean granted = rxPermissions.isGranted(permission);
+            boolean revoked = rxPermissions.isRevoked(permission);
+            LOG.i("permission:" + permission + "granted:+" + granted + "-revoked:" + revoked);
+            if (!granted && !revoked) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 判断当前应用是否有指定权限,运行时权限的检测
+     */
+    public boolean hasPermissions(Context context, String[] permissions) {
+        if (permissions == null || permissions.length == 0) {
+            return true;
+        }
+        boolean ifSdk = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
+        for (String permission : permissions) {
+            if (ifSdk && !hasPermission(context, permission)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean hasPermission(Context context, String permission) {
+        return ActivityCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
+    }
+
+    public void dismissDialog() {
+        isShow = false;
+        if (mRunnable != null) {
+            ThreadUtils.getMainHandler().removeCallbacks(mRunnable);
+        }
+        mRunnable = null;
+        if (mPermissionTipDialog != null) {
+            mPermissionTipDialog.dismiss();
+            mPermissionTipDialog = null;
+        }
+    }
+}

+ 59 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/PermissionTipDialog.java

@@ -0,0 +1,59 @@
+package com.cooleshow.base.widgets.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import com.cooleshow.base.R;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2024/3/4.
+ */
+public class PermissionTipDialog extends Dialog {
+
+    private TextView mTvDes;
+
+    public PermissionTipDialog(@NonNull Context context) {
+        super(context, R.style.TopDialogStyle);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_permission_tip_layout);
+        mTvDes = findViewById(R.id.tv_des);
+        initParams();
+    }
+
+
+    public void setDes(String des) {
+        if (mTvDes != null) {
+            mTvDes.setText(des);
+        }
+    }
+
+    private void initParams() {
+        Window window = getWindow();
+        //设置dialog在屏幕底部
+        window.setGravity(Gravity.TOP);
+        //设置dialog弹出时的动画效果
+        window.setWindowAnimations(R.style.TopAnimation);
+        window.getDecorView().setPadding(0, 0, 0, 0);
+        //获得window窗口的属性
+        WindowManager.LayoutParams lp = window.getAttributes();
+        //设置窗口宽度为充满全屏
+        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+        //设置窗口高度为包裹内容
+        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        lp.horizontalMargin = 0;
+//        lp.verticalMargin = 0;
+        //将设置好的属性set回去
+        window.setAttributes(lp);
+    }
+}

+ 3 - 3
BaseLibrary/src/main/res/anim/top_enter_anim.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="200">
-    <!--<translate-->
-        <!--android:fromYDelta="-100%p"-->
-        <!--android:toYDelta="0%p" />-->
+    <translate
+        android:fromYDelta="-100%p"
+        android:toYDelta="0%p" />
 
     <alpha
         android:fromAlpha="0.0"

+ 4 - 4
BaseLibrary/src/main/res/anim/top_exit_anim.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="200">
-    <!--<translate-->
-        <!--android:duration="@android:integer/config_mediumAnimTime"-->
-        <!--android:fromYDelta="0%p"-->
-        <!--android:toYDelta="-100%p" />-->
+    <translate
+        android:duration="@android:integer/config_mediumAnimTime"
+        android:fromYDelta="0%p"
+        android:toYDelta="-100%p" />
 
     <alpha
         android:duration="@android:integer/config_mediumAnimTime"

+ 57 - 0
BaseLibrary/src/main/res/layout/dialog_permission_tip_layout.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/transparent">
+
+    <androidx.cardview.widget.CardView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="10dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginEnd="10dp"
+        android:layout_marginBottom="10dp"
+        app:cardBackgroundColor="@color/white"
+        app:cardCornerRadius="13dp"
+        app:cardElevation="3dp">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingStart="13dp"
+            android:paddingTop="15dp"
+            android:paddingEnd="13dp"
+            android:paddingBottom="15dp">
+
+
+            <TextView
+                android:id="@+id/tv_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:includeFontPadding="false"
+                android:text="权限说明"
+                android:textColor="@color/color_333333"
+                android:textSize="@dimen/sp_16"
+                android:textStyle="bold"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/tv_des"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:includeFontPadding="false"
+                android:textColor="@color/color_333333"
+                android:textSize="@dimen/sp_13"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tv_title"
+                tools:text="申请相机权限为了拍摄照片和录制视频,用于完成视频拍摄,拍照,证件扫描,二维码扫描等功能" />
+
+        </LinearLayout>
+    </androidx.cardview.widget.CardView>
+</FrameLayout>

+ 6 - 0
BaseLibrary/src/main/res/values/strings.xml

@@ -20,4 +20,10 @@
     <string name="sure">确定</string>
     <string name="press_twice_exit" >再按一次返回键退出</string>
     <string name="price_free_str">免费</string>
+
+    <string name="camera_permission_tip">申请相机权限是为了拍摄照片和录制视频,用于完成拍照、视频拍摄、证件扫描、二维码扫描等功能;</string>
+    <string name="write_storage_permission_tip">存储权限是为了存储必要文件和资源等功能;</string>
+    <string name="read_storage_permission_tip">读取手机存储权限是为了读取手机存储中应用必要资源,选取相册相片等功能;</string>
+    <string name="record_audio_permission_tip">录音权限是为了完成录音功能;</string>
+    <string name="call_phone_permission_tip">录拨打电话权限是为了完成拨打电话功能;</string>
 </resources>

+ 17 - 0
BaseLibrary/src/main/res/values/styles.xml

@@ -493,6 +493,23 @@
         <item name="android:windowAnimationStyle">@style/BottomAnimation</item>
     </style>
 
+    <style name="TopDialogStyle" parent="@android:style/Theme.Holo.Dialog">
+        <!-- 是否有边框 -->
+        <item name="android:windowFrame">@null</item>
+        <!--是否在悬浮Activity之上  -->
+        <item name="android:windowIsFloating">true</item>
+        <!-- 标题 -->
+        <item name="android:windowNoTitle">true</item>
+        <!--阴影  -->
+        <item name="android:windowIsTranslucent">true</item><!--半透明-->
+
+        <!--        <item name="android:backgroundDimEnabled">true</item>-->
+        <!--背景透明-->
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:backgroundDimAmount">0.1</item>
+        <!-- 还可以加入一些弹出和退出的动画 (lan)-->
+        <item name="android:windowAnimationStyle">@style/TopAnimation</item>
+    </style>
 
     <style name="Student_NORMAL_STYLE" parent="AppTheme">
         <item name="klx_main_color">@color/color_2dc7aa</item>

+ 9 - 4
chatModule/src/main/java/com/cooleshow/chatmodule/ui/ImAppealActivity.java

@@ -22,7 +22,9 @@ import com.cooleshow.base.constanst.UploadConstants;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIDeviceHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -177,15 +179,18 @@ public class ImAppealActivity extends BaseMVPActivity<TcActivityImAppealBinding,
     }
 
     private void toSelectPic() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请打开存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

+ 8 - 3
classRoom/src/main/java/com/dayayuemeng/classroom/helper/OpenClassRoomHelper.java

@@ -12,6 +12,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -40,11 +41,15 @@ public class OpenClassRoomHelper {
     }
 
     private static void checkPermission(FragmentActivity activity, String sealClassId, String subjectName) {
+        String[] permissions = new String[]{Manifest.permission.MODIFY_AUDIO_SETTINGS,
+                Manifest.permission.RECORD_AUDIO,
+                Manifest.permission.CAMERA};
+        PermissionTipHelper.getInstance().showTipDialog(activity, permissions);
+
         Disposable subscribe = new RxPermissions(activity)
-                .request(Manifest.permission.MODIFY_AUDIO_SETTINGS,
-                        Manifest.permission.RECORD_AUDIO,
-                        Manifest.permission.CAMERA)
+                .request(permissions)
                 .subscribe(isAllowPermission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (isAllowPermission) {
                         prepareOpenCourseRoom(activity, sealClassId, subjectName);
                     } else {

+ 7 - 2
classRoom/src/main/java/com/dayayuemeng/classroom/ui/StudentNetClassRoomActivity.java

@@ -28,6 +28,7 @@ import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIDisplayHelper;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -244,10 +245,14 @@ public class StudentNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomS
     }
 
     private void checkNeedPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
+                , Manifest.permission.CAMERA};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
+
         Disposable disposable = new RxPermissions(StudentNetClassRoomActivity.this)
-                .request(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
-                        , Manifest.permission.CAMERA)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         initLiveConfig();
                     } else {

+ 7 - 2
classRoom/src/main/java/com/dayayuemeng/classroom/ui/TeacherNetClassRoomActivity.java

@@ -31,6 +31,7 @@ import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIDisplayHelper;
 import com.cooleshow.base.widgets.BaseDialog;
 import com.cooleshow.base.widgets.DialogUtil;
@@ -263,10 +264,14 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
     }
 
     private void checkNeedPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
+                , Manifest.permission.CAMERA};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
+
         Disposable disposable = new RxPermissions(TeacherNetClassRoomActivity.this)
-                .request(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
-                        , Manifest.permission.CAMERA)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         initLiveConfig();
                     } else {

+ 8 - 16
classRoom/src/main/java/com/dayayuemeng/classroom/ui/fragment/NewCustomWhiteBoardFragment.java

@@ -34,7 +34,9 @@ import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.dayayuemeng.classroom.R;
@@ -368,9 +370,13 @@ public class NewCustomWhiteBoardFragment extends BaseWhiteFragment<NewFragmentCu
     }
 
     private void insertImage() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
+
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         PictureSelector.create(this)
                                 .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
@@ -386,21 +392,7 @@ public class NewCustomWhiteBoardFragment extends BaseWhiteFragment<NewFragmentCu
                                 .circleDimmedLayer(false)// 是否圆形裁剪 true or false
                                 .forResult(PictureConfig.CHOOSE_REQUEST);
                     } else {
-                        DialogUtil.showInCenter(getChildFragmentManager(), com.cooleshow.base.R.layout.common_popu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(R.id.tv_title);
-                            TextView tvContent = holder.getView(R.id.tv_content);
-                            TextView btncancel = holder.getView(R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText("上传照片需要相机权限,是否去设置?");
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(getActivity());
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getChildFragmentManager(),getContext(),"提示","上传照片需要相机权限,是否去设置?");
                     }
                 });
 

+ 16 - 8
institution/src/main/java/com/cooleshow/institution/stu/ui/setting/PersonalSettingActivity.java

@@ -27,7 +27,9 @@ import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.PopupUtil;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.institution.stu.R;
 import com.cooleshow.institution.stu.contract.PersonalSettingContract;
@@ -277,15 +279,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<JgActivityPersonalS
     }
 
     private void toCamera() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goCamera();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"","请选择存储和相机权限!");
                     }
                 });
     }
@@ -327,15 +332,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<JgActivityPersonalS
     }
 
     private void toAlbum() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请选择存储和相机权限!");
                     }
                 });
     }

+ 37 - 38
live_teaching/src/main/java/com/daya/live_teaching/utils/helper/CourseEnterHelper.java

@@ -21,7 +21,6 @@ import com.tbruyelle.rxpermissions3.RxPermissions;
 
 import androidx.fragment.app.FragmentActivity;
 import io.reactivex.rxjava3.disposables.Disposable;
-import io.rong.imlib.RongIMClient;
 
 /**
  * Author by pq, Date on 2022/6/29.
@@ -53,43 +52,43 @@ public class CourseEnterHelper {
     }
 
     private static void prepareOpenCourseRoom(Activity activity, String sealClassId, String subjectName) {
-        RongIMClient.ConnectionStatusListener.ConnectionStatus currentConnectionStatus = RongIMClient.getInstance().getCurrentConnectionStatus();
-        if (currentConnectionStatus == RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED) {
-            if (!TextUtils.isEmpty(subjectName) && (subjectName.equals(SNARE_DRUM) || subjectName.equals(FLUTE))) {
-                RtcManager.getInstance().setVideoResolution(0, activity);
-            } else {
-                RtcManager.getInstance().setVideoResolution(3, activity);
-            }
-            UserRepository userRepository = new UserRepository(activity);
-            String userName = UserHelper.getUserName();
-            userRepository.login(sealClassId, false, userName, new ResultCallback<LoginResult>() {
-                @Override
-                public void onSuccess(LoginResult loginResult) {
-                    ARouter.getInstance().build(RouterPath.OnlineClassroom.PATH_LIVE)
-                            .withSerializable(LiveActivity.EXTRA_LOGIN_RESULT, loginResult)
-                            .withBoolean(LiveActivity.EXTRA_CLOSE_CAMERA, false)
-                            .navigation();
-                }
-
-                @Override
-                public void onFail(int errorCode, String errorStr) {
-                    if (activity != null) {
-                        activity.runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                if (!TextUtils.isEmpty(errorStr)) {
-                                    ToastUtil.getInstance().show(activity, errorStr);
-                                } else {
-                                    ToastUtil.getInstance().show(activity, "加入课堂失败,请重试;错误码:" + errorCode);
-                                }
-                            }
-                        });
-                    }
-                }
-            });
-        } else {
-            ToastUtil.getInstance().show(activity, "聊天服务未连接,进入教室异常");
-        }
+//        RongIMClient.ConnectionStatusListener.ConnectionStatus currentConnectionStatus = RongIMClient.getInstance().getCurrentConnectionStatus();
+//        if (currentConnectionStatus == RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED) {
+//            if (!TextUtils.isEmpty(subjectName) && (subjectName.equals(SNARE_DRUM) || subjectName.equals(FLUTE))) {
+//                RtcManager.getInstance().setVideoResolution(0, activity);
+//            } else {
+//                RtcManager.getInstance().setVideoResolution(3, activity);
+//            }
+//            UserRepository userRepository = new UserRepository(activity);
+//            String userName = UserHelper.getUserName();
+//            userRepository.login(sealClassId, false, userName, new ResultCallback<LoginResult>() {
+//                @Override
+//                public void onSuccess(LoginResult loginResult) {
+//                    ARouter.getInstance().build(RouterPath.OnlineClassroom.PATH_LIVE)
+//                            .withSerializable(LiveActivity.EXTRA_LOGIN_RESULT, loginResult)
+//                            .withBoolean(LiveActivity.EXTRA_CLOSE_CAMERA, false)
+//                            .navigation();
+//                }
+//
+//                @Override
+//                public void onFail(int errorCode, String errorStr) {
+//                    if (activity != null) {
+//                        activity.runOnUiThread(new Runnable() {
+//                            @Override
+//                            public void run() {
+//                                if (!TextUtils.isEmpty(errorStr)) {
+//                                    ToastUtil.getInstance().show(activity, errorStr);
+//                                } else {
+//                                    ToastUtil.getInstance().show(activity, "加入课堂失败,请重试;错误码:" + errorCode);
+//                                }
+//                            }
+//                        });
+//                    }
+//                }
+//            });
+//        } else {
+//            ToastUtil.getInstance().show(activity, "聊天服务未连接,进入教室异常");
+//        }
     }
 
     private static void showTipDialog(Activity activity) {

+ 5 - 1
musicMerge/src/main/java/com/cooleshow/musicmerge/ui/MusicHandleSettingFragment.java

@@ -22,6 +22,7 @@ import com.cooleshow.base.utils.ThreadUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.musicmerge.R;
 import com.cooleshow.musicmerge.bean.MusicMergeConfigBean;
@@ -262,9 +263,12 @@ public class MusicHandleSettingFragment extends BaseFragment<FgMusicHandleSettin
 
     @SuppressLint("CheckResult")
     private void toCheckDownload(boolean isNeedNotify) {
+        String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(MusicHandleSettingFragment.this)
-                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         checkDownload(isNeedNotify);
                     } else {

+ 5 - 1
musicMerge/src/main/java/com/cooleshow/musicmerge/ui/work/MyWorkDraftFragment.java

@@ -15,6 +15,7 @@ import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
@@ -159,9 +160,12 @@ public class MyWorkDraftFragment extends BaseMVPFragment<FgMyWorkDraftLayoutBind
     }
 
     private void goAdjustActivity(MyWorkListBean.RowsBean rowsBean) {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.RECORD_AUDIO)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         startAdjust(rowsBean);
                     } else {

+ 8 - 1
musictuner/src/main/java/com/cooleshow/musictuner/MusicTunerActivity.java

@@ -31,6 +31,8 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.metronome.Utils.PlayBeanManager;
 import com.cooleshow.metronome.constants.MetronomeType;
 import com.cooleshow.musictuner.bean.VoiceToneBean;
@@ -70,11 +72,16 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         EventBus.getDefault().register(this);
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.RECORD_AUDIO)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         initHelper();
+                    } else {
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(), MusicTunerActivity.this, "提示", "请开启麦克风访问权限");
                     }
                 });
     }

+ 8 - 4
student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java

@@ -24,6 +24,7 @@ import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.student.R;
@@ -302,15 +303,18 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
     }
 
     private void getVideoPermission() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         chooseVideo();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请选择存储和相机权限!");
                     }
                 });
     }

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
student/src/main/java/com/cooleshow/student/ui/main/MallFragment.java


+ 7 - 17
student/src/main/java/com/cooleshow/student/ui/main/MineFragment.java

@@ -17,6 +17,7 @@ import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.student.R;
@@ -195,29 +196,18 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     }
 
     private void checkPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.RECORD_AUDIO,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         ARouter.getInstance().build(RouterPath.MineCenter.MINE_EQUIPMENT_TEST)
                                 .navigation();
                     } else {
-                        DialogUtil.showInCenter(getChildFragmentManager(), com.cooleshow.base.R.layout.common_popu_stu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(com.cooleshow.base.R.id.tv_title);
-                            TextView tvContent = holder.getView(com.cooleshow.base.R.id.tv_content);
-                            TextView btncancel = holder.getView(com.cooleshow.base.R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(com.cooleshow.base.R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText(getResources().getString(com.cooleshow.base.R.string.equipment_testing_hint));
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(getContext());
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getChildFragmentManager(),getContext(),"提示",getString(com.cooleshow.base.R.string.equipment_testing_hint));
                     }
                 });
     }

+ 16 - 8
student/src/main/java/com/cooleshow/student/ui/mine/PersonalSettingActivity.java

@@ -25,7 +25,9 @@ import com.cooleshow.base.bean.TeachableInstrumentBean;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.MyFileUtils;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -261,15 +263,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
     }
 
     private void toCamera() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goCamera();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }
@@ -314,15 +319,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
 
 
     private void toAlbum() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请选择存储和相机权限!");
                     }
                 });
     }

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java


+ 1 - 1
student/src/main/java/com/cooleshow/student/ui/web/WebActivity.java

@@ -63,7 +63,7 @@ import java.util.List;
 /**
  * Author by pq, Date on 2022/4/24.
  */
-
+@Deprecated
 public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements JsInterfaceHelper.OnJsMethodCallListener, View.OnClickListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
     private WebView webView;

+ 8 - 4
student/src/main/java/com/cooleshow/student/ui/work/HomeWorkDetailActivity.java

@@ -20,6 +20,7 @@ import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.VideoThumbnailView;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
@@ -140,15 +141,18 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
     }
 
     private void getVideoPermission() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         chooseVideo();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

+ 7 - 17
tclive/src/main/java/com/daya/tclive/ui/TCStudentLiveRoomActivity.java

@@ -40,6 +40,7 @@ import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.SoftKeyboardUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.DensityUtil;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.base.widgets.InputBar;
@@ -742,28 +743,17 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
 
     @SuppressLint("CheckResult")
     private void toCheckMicPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.RECORD_AUDIO,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         handleMicClick();
                     } else {
-                        DialogUtil.showInCenter(getSupportFragmentManager(), com.cooleshow.base.R.layout.common_popu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(com.cooleshow.base.R.id.tv_title);
-                            TextView tvContent = holder.getView(com.cooleshow.base.R.id.tv_content);
-                            TextView btncancel = holder.getView(com.cooleshow.base.R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(com.cooleshow.base.R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText("连麦需要麦克风、储存权限,去设置?");
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(getApplicationContext());
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","连麦需要麦克风、储存权限,去设置?");
                     }
                 });
     }

+ 6 - 2
tclive/src/main/java/com/daya/tclive/ui/TCTeacherLiveRoomActivity.java

@@ -32,6 +32,7 @@ import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.widgets.InputBar;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
 import com.cooleshow.base.widgets.dialog.InputBarDialog;
@@ -479,10 +480,13 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
     }
 
     private void checkNeedPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
+                , Manifest.permission.CAMERA};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         Disposable disposable = new RxPermissions(TCTeacherLiveRoomActivity.this)
-                .request(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE
-                        , Manifest.permission.CAMERA)
+                .request(permissions)
                 .subscribe(permission -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (permission) {
                         initLiveConfig();
                     } else {

+ 9 - 4
teacher/src/main/java/com/cooleshow/teacher/ui/live/CreateLiveActivity.java

@@ -16,7 +16,9 @@ import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.MyFileUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.contract.CreateLiveContract;
@@ -115,15 +117,18 @@ public class CreateLiveActivity extends BaseMVPActivity<ActivityCreateLiveBindin
     }
 
     private void toAlbum() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MallFragment.java


+ 7 - 17
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -16,6 +16,7 @@ import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.teacher.R;
@@ -493,29 +494,18 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     }
 
     private void checkPermission() {
+        String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.RECORD_AUDIO,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         ARouter.getInstance().build(RouterPath.MineCenter.MINE_EQUIPMENT_TEST)
                                 .navigation();
                     } else {
-                        DialogUtil.showInCenter(getChildFragmentManager(), com.cooleshow.base.R.layout.common_popu_stu, (holder, dialog) -> {
-                            TextView tvTitle = holder.getView(com.cooleshow.base.R.id.tv_title);
-                            TextView tvContent = holder.getView(com.cooleshow.base.R.id.tv_content);
-                            TextView btncancel = holder.getView(com.cooleshow.base.R.id.btn_cancel);
-                            TextView btnCommit = holder.getView(com.cooleshow.base.R.id.btn_commit);
-                            tvTitle.setText("提示");
-                            tvContent.setText(getResources().getString(com.cooleshow.base.R.string.equipment_testing_hint));
-                            btncancel.setOnClickListener(view1 -> {
-                                dialog.dismiss();
-                            });
-                            btnCommit.setOnClickListener(view1 -> {
-                                PermissionUtils.toSelfSetting(getContext());
-                                dialog.dismiss();
-                            });
-                        });
+                        UiUtils.showPermissionTipDialog(getChildFragmentManager(),getContext(),"提示",getString(com.cooleshow.base.R.string.equipment_testing_hint));
                     }
                 });
     }

+ 16 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalSettingActivity.java

@@ -19,7 +19,9 @@ 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.utils.MyFileUtils;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.usercenter.bean.TeacherUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -166,15 +168,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
     }
 
     private void toCamera() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goCamera();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }
@@ -249,15 +254,18 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
 
 
     private void toAlbum() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

+ 22 - 12
teacher/src/main/java/com/cooleshow/teacher/ui/minestyle/MineStylePageActivity.java

@@ -37,6 +37,7 @@ import com.cooleshow.base.utils.SoftKeyboardUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.CommonItemDecoration;
 import com.cooleshow.base.widgets.EmptyViewLayout;
@@ -332,15 +333,18 @@ public class MineStylePageActivity extends BaseMVPActivity<ActivityMineStylePage
 
 
     private void toAlbum(boolean isUploadAvatar) {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum(isUploadAvatar);
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }
@@ -604,15 +608,18 @@ public class MineStylePageActivity extends BaseMVPActivity<ActivityMineStylePage
 
 
     private void getVideoPermission() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         chooseVideo();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }
@@ -661,15 +668,18 @@ public class MineStylePageActivity extends BaseMVPActivity<ActivityMineStylePage
     }
 
     private void toCamera() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goCamera();
                     } else {
-                        ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

Fichier diff supprimé car celui-ci est trop grand
+ 12 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java


+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/web/WebActivity.java

@@ -65,7 +65,7 @@ import java.util.List;
 /**
  * Author by pq, Date on 2022/4/24.
  */
-
+@Deprecated
 public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements JsInterfaceHelper.OnJsMethodCallListener, View.OnClickListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
     private WebView webView;

+ 8 - 4
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/FeedBackActivity.java

@@ -27,6 +27,7 @@ import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.QMUIDeviceHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
@@ -183,15 +184,18 @@ public class FeedBackActivity extends BaseMVPActivity<ActivityFeedbackLayoutBind
     }
 
     private void toSelectPic() {
+        String[] permissions = new String[]{Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
-                .request(Manifest.permission.CAMERA,
-                        Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .request(permissions)
                 .subscribe(granted -> {
+                    PermissionTipHelper.getInstance().dismissDialog();
                     if (granted) {
                         goAlbum();
                     } else {
-                        ToastUtil.getInstance().show(this, "请打开存储和相机权限!");
+                        UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","请打开存储和相机权限!");
                     }
                 });
     }

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff