浏览代码

修改上传时权限申请

Pq 3 年之前
父节点
当前提交
699d819cc6

+ 32 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/DialogHelper.java

@@ -0,0 +1,32 @@
+package com.cooleshow.base.utils.helper;
+
+import android.app.Activity;
+import android.widget.TextView;
+
+import com.cooleshow.base.utils.PermissionUtils;
+import com.cooleshow.base.widgets.DialogUtil;
+
+import androidx.fragment.app.FragmentActivity;
+
+/**
+ * Author by pq, Date on 2022/6/28.
+ */
+public class DialogHelper {
+    public static void showTipDialog(FragmentActivity context, String content) {
+        DialogUtil.showInCenter(context.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(content);
+            btncancel.setOnClickListener(view1 -> {
+                dialog.dismiss();
+            });
+            btnCommit.setOnClickListener(view1 -> {
+                PermissionUtils.toSelfSetting(context);
+                dialog.dismiss();
+            });
+        });
+    }
+}

+ 7 - 1
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/upload/UploadHelper.java

@@ -117,7 +117,13 @@ public class UploadHelper {
         mClient.putObject(putObjectRequest, new PutObjectResponseHandler() {
             @Override
             public void onTaskFailure(int i, Ks3Error ks3Error, Header[] headers, String s, Throwable throwable) {
-                LogUtils.i("pq", "onFailure postObject is " + s);
+                if (throwable != null) {
+                    throwable.printStackTrace();
+                }
+                if (upLoadCallBack != null) {
+                    upLoadCallBack.onFailure();
+                }
+                LogUtils.i("pq", "onFailure postObject is " + ks3Error.getErrorMessage());
             }
 
             @Override

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

@@ -73,7 +73,6 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
     private ValueCallback mUploadCallbackAboveL;
 
 
-
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -85,6 +84,7 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
     protected ActivityHtmlBinding getLayoutView() {
         return ActivityHtmlBinding.inflate(getLayoutInflater());
     }
+
     private RelativeLayout rl_activity_html;
     private ImageView btnClose;
     private TextView tvTitle;
@@ -102,14 +102,14 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
         ivActionIcon = getIntent().getIntExtra("ivAction", -1);
         startType = getIntent().getIntExtra("startType", -1);
 
-        rl_activity_html=viewBinding.rlActivityHtml;
-        btnClose=viewBinding.btnClose;
-        tvTitle=viewBinding.tvTitle;
-        tvAction=viewBinding.tvAction;
-        ivAction=viewBinding.ivAction;
-        viewParent=viewBinding.viewParent;
-        mLayout=viewBinding.flVideo;
-        btnBack=viewBinding.btnBack;
+        rl_activity_html = viewBinding.rlActivityHtml;
+        btnClose = viewBinding.btnClose;
+        tvTitle = viewBinding.tvTitle;
+        tvAction = viewBinding.tvAction;
+        ivAction = viewBinding.ivAction;
+        viewParent = viewBinding.viewParent;
+        mLayout = viewBinding.flVideo;
+        btnBack = viewBinding.btnBack;
         if (ivActionIcon > 0 && 1000 == startType) {
             ivAction.setImageResource(ivActionIcon);
             ivAction.setVisibility(View.VISIBLE);
@@ -308,13 +308,21 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
     }
 
 
-
     @Override
     public void chooseFile(JSONObject message) {
         JSONObject content = (JSONObject) message.opt("content");
         String type = (String) content.opt("image/*");
         String[] types = new String[]{type};
-        showFileChooser();
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        showFileChooser();
+                    } else {
+                        String tip = "上传文件需要储存卡读取权限,是否去设置?";
+                        showCommonTipDialog(tip);
+                    }
+                });
     }
 
 
@@ -362,7 +370,7 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
         public void onReceivedTitle(WebView view, String title) {
             super.onReceivedTitle(view, title);
             if (!TextUtils.isEmpty(title)) {
-                if (null!=viewBinding.tvTitle){
+                if (null != viewBinding.tvTitle) {
                     viewBinding.tvTitle.setText(title);
                 }
 
@@ -505,8 +513,8 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
         if (requestCode == PictureConfig.CHOOSE_REQUEST && mUploadCallbackAboveL != null) {
             // 图片、视频、音频选择结果回调
             List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
-            String avatar="";
-            if (null!=selectList&&selectList.size()>0){
+            String avatar = "";
+            if (null != selectList && selectList.size() > 0) {
                 avatar = selectList.get(0).getCompressPath();
             }
 
@@ -523,23 +531,9 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
             if (result != null) {
                 File file = UriUtils.uri2File(result);
                 if (file != null && file.exists()) {
-                    Log.e("asdfasdfsdf", "onActivityResult: =============" );
+                    Log.e("asdfasdfsdf", "onActivityResult: =============");
                     UploadHelper uploadHelper = new UploadHelper(WebActivity.this);
                     uploadHelper.uploadFile(file);
-                    /*if (file.exists() && file.isFile()) {
-                        Uri newUri = Uri.fromFile(file);
-                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                            if (mUploadCallbackAboveL != null) {
-                                if (newUri != null) {
-                                    mUploadCallbackAboveL.onReceiveValue(new Uri[]{newUri});
-                                    mUploadCallbackAboveL = null;
-                                    return;
-                                }
-                            }
-                        }
-                    } else {
-                        ToastUtils.showShort("文件损坏或不存在,请重新选择");
-                    }*/
                 }
             }
             clearUploadMessage();

+ 10 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -54,6 +54,7 @@ import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.teacher.App;
@@ -666,8 +667,15 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     @Override
     public void chooseFile(JSONObject message) {
         baseJsonObject = message;
-        showFileChooser();
-
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        showFileChooser();
+                    } else {
+                        DialogHelper.showTipDialog(this,"上传文件需要储存权限,去设置?");
+                    }
+                });
     }
 
     private JSONObject baseJsonObject;