permission.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const checkIsIos = async () => {
  2. return new Promise((resolve => {
  3. uni.getSystemInfo({
  4. success: function(res) {
  5. resolve(res.platform === "ios")
  6. }
  7. });
  8. }))
  9. }
  10. /**
  11. * 授权前告知用户使用意图
  12. * @param content
  13. * @returns
  14. */
  15. showAuthTipModal = async (authorize) => {
  16. // #ifdef H5
  17. if (1 === 1) {
  18. return true
  19. }
  20. // #endif
  21. // ios端在manifest.json配置权限使用说明,以下权限判断仅在安卓端可用
  22. let isIos = await checkIsIos()
  23. if (isIos) return true
  24. let compat = plus.android.importClass('androidx.core.content.ContextCompat')
  25. let context = plus.android.runtimeMainActivity()
  26. let result = compat.checkSelfPermission(context, authorize)
  27. console.log("result===", result);
  28. if (result === 0) return true
  29. // // 如果已经授权直接返回
  30. const contentData = {
  31. ['android.permission.ACCESS_FINE_LOCATION']: {
  32. title: "定位权限说明",
  33. describe: "用于获取天气信息"
  34. },
  35. ["android.permission.READ_EXTERNAL_STORAGE"]: {
  36. title: "相册权限说明",
  37. describe: "用于获取图片文件信息、识别/上传文件内容"
  38. },
  39. ["android.permission.CAMERA"]: {
  40. title: "拍摄权限说明",
  41. describe: "用于拍照上传用户头像、识别物品信息或上传图片资料信息"
  42. },
  43. }
  44. return new Promise((resolve) => {
  45. uni.showModal({
  46. title: contentData[authorize].title,
  47. content: contentData[authorize].describe,
  48. success: (res) => {
  49. resolve(!!res.confirm)
  50. },
  51. fail: () => {
  52. }
  53. })
  54. })
  55. },
  56. /**
  57. * 用户拒绝授权提示手动授权
  58. */
  59. showManualAuth = async (authorize) => {
  60. let isIos = await checkIsIos()
  61. if (isIos) return true
  62. const contentData = {
  63. ['android.permission.ACCESS_FINE_LOCATION']: "获取定位权限失败,请手动打开授权或检查系统定位开关",
  64. ["android.permission.READ_EXTERNAL_STORAGE"]: "获取相册权限失败,请手动打开授权",
  65. ["android.permission.CAMERA"]: "获取拍摄权限失败,请手动打开授权",
  66. ["android.permission.CALL_PHONE"]: "获取拨打电话权限失败,请手动打开授权",
  67. }
  68. uni.showModal({
  69. title: '提示',
  70. content: contentData[authorize],
  71. confirmText: "去设置",
  72. success: (res) => {
  73. if (res.confirm) {
  74. uni.openAppAuthorizeSetting({
  75. success(res) {
  76. console.log(res);
  77. }
  78. });
  79. }
  80. if (res.cancel) {
  81. console.log('用户点击取消');
  82. }
  83. }
  84. });
  85. }
  86. module.exports = {
  87. showAuthTipModal: showAuthTipModal,
  88. showManualAuth: showManualAuth,
  89. }