permission.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { defineStore } from "pinia";
  2. export const usePermissionStore = defineStore('permission', () => {
  3. // #ifdef APP-PLUS
  4. const plugin = uni.requireNativePlugin('Permission')
  5. // #endif
  6. const permissions = {
  7. camera: 'android.permission.CAMERA',
  8. image: 'android.permission.READ_MEDIA_IMAGES',
  9. video: 'android.permission.READ_MEDIA_VIDEO',
  10. audio: 'android.permission.READ_MEDIA_AUDIO',
  11. write: 'android.permission.WRITE_EXTERNAL_STORAGE',
  12. read: 'android.permission.READ_EXTERNAL_STORAGE',
  13. select: 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',
  14. }
  15. /**
  16. * 请求权限
  17. * @param permissions
  18. * @returns {Promise<unknown>}
  19. */
  20. const requestPermissions = (permissions) => {
  21. return new Promise(async (resolve, reject) => {
  22. // #ifdef APP
  23. plugin.requestPermissions({
  24. permissions,
  25. }, (result) => {
  26. if (result.success) resolve()
  27. else reject()
  28. })
  29. // #endif
  30. // #ifdef H5
  31. resolve()
  32. // #endif
  33. })
  34. }
  35. /**
  36. * 请求选择图片相关权限
  37. */
  38. const requestImagePermissions = () => {
  39. return new Promise(async (resolve, reject) => {
  40. // #ifdef APP
  41. plugin.requestImagePermissions((result) => {
  42. if (result.success) resolve()
  43. else reject()
  44. })
  45. // #endif
  46. // #ifdef H5
  47. resolve()
  48. // #endif
  49. })
  50. }
  51. return { permissions, requestPermissions, requestImagePermissions }
  52. })