li.shaoyi пре 4 месеци
родитељ
комит
470998bb6a
1 измењених фајлова са 25 додато и 8 уклоњено
  1. 25 8
      src/packages/mobile/components/base/gallery/index.vue

+ 25 - 8
src/packages/mobile/components/base/gallery/index.vue

@@ -27,7 +27,7 @@
 
 <script lang="ts" setup>
 import { computed, PropType } from 'vue'
-import { Image, Icon, Loading, showFailToast } from 'vant'
+import { Image, Icon, Loading, showFailToast, showDialog } from 'vant'
 import { UploadFile } from './types'
 import h5plus from '@/utils/h5plus'
 
@@ -101,10 +101,30 @@ const checkImagesPermission = () => {
                 } else {
                     h5plus.requestPermission({
                         permissions,
-                        errorMessage: '相册权限未授权',
-                        refuseMessage: '访问相册被拒绝',
-                        onSuccess: () => resolve(),
-                        onError: (error) => reject(error)
+                        onSuccess: () => {
+                            resolve()
+                        },
+                        onError: (error) => {
+                            showDialog({
+                                message: '需要相册权限才能正常使用该功能,是否前往设置页面开启权限?',
+                                showCancelButton: true,
+                                cancelButtonText: '否',
+                                confirmButtonText: '是'
+                            }).then(() => {
+                                const main = plus.android.runtimeMainActivity()
+                                const Intent = plus.android.importClass('android.content.Intent')
+                                const Settings = plus.android.importClass('android.provider.Settings')
+                                const Uri = plus.android.importClass('android.net.Uri')
+                                
+                                const intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
+                                const uri = Uri.fromParts('package', main.getPackageName(), null)
+                                intent.setData(uri)
+
+                                main.startActivity(intent)
+                            }).finally(() => {
+                                reject(error)
+                            })
+                        }
                     })
                 }
             })
@@ -112,7 +132,6 @@ const checkImagesPermission = () => {
             resolve()
         }
     })
-
 }
 
 // https://www.html5plus.org/doc/zh_cn/gallery.html#plus.gallery.pick
@@ -154,8 +173,6 @@ const chooseFile = (index = -1) => {
                 filter: props.fileType
             })
         })
-    }).catch((error) => {
-        showFailToast(error)
     })
 }