mrr.sj.front/utils/permissionTips.js

90 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

2026-03-24 11:45:13 +08:00
function showView(permissions) {
// #ifdef APP-PLUS
const permissionTipsArr = [{
"keyName": "android.permission.INTERNET",
"title": global.i18n.t('使用网络权限'),
"content": global.i18n.t('与服务器进行数据交换,如同步用户数据、获取最新信息等')
}, {
"keyName": "android.permission.READ_EXTERNAL_STORAGE",
"title": global.i18n.t('读写SD卡权限'),
"content": global.i18n.t('访问用户的媒体库,如音乐播放列表、照片相册等')
}, {
"keyName": "android.permission.WRITE_EXTERNAL_STORAGE",
"title": global.i18n.t('读写SD卡权限'),
"content": global.i18n.t('访问用户的媒体库,如音乐播放列表、照片相册等')
}, {
"keyName": "android.permission.READ_PHONE_STATE",
"title": global.i18n.t('读取设备标识权限'),
"content": global.i18n.t('根据设备特征提供定制化的用户体验')
}, {
"keyName": "android.permission.CAMERA",
"title": global.i18n.t('拍照权限'),
"content": global.i18n.t('扫描二维码或条形码,用于支付、登录等场景')
}, {
"keyName": "android.permission.ACCESS_COARSE_LOCATION",
"title": global.i18n.t('定位权限'),
"content": global.i18n.t('根据用户位置提供附近的商家、景点、餐厅等信息')
}]
const permissionTips = Array.isArray(permissionTipsArr) ?
permissionTipsArr.reduce((accumulator, {
keyName,
title,
content
}) => {
accumulator[keyName] = `<div class="permission_content">
<div class='tips-item'>
<div class='title'>${title}</div>
<div class='center'>${content}</div>
</div>
</div>`
return accumulator
}, {}) :
{}
let permissionInfo = ''
permissions.map((key) => {
if (permissionTips[key]) {
permissionInfo += permissionTips[key]
} else {
console.log(key + '未配置提示语')
}
})
if (!permissionInfo) return null
const systemInfo = uni.getSystemInfoSync()
let wvPath = '/static/permissionTips.html'
let wv = new plus.webview.create(
wvPath,
'permissionTips', {
'uni-app': 'none',
top: systemInfo.statusBarHeight,
left: 0,
width: systemInfo.screenWidth,
height: systemInfo.screenHeight - systemInfo.statusBarHeight,
background: 'transparent',
}, {
permissionInfo,
}
)
wv.show()
return wv
// #endif
return null
}
let platform = uni.getSystemInfoSync().platform
export function permissionListener() {
// showView(["android.permission.CAMERA", "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_EXTERNAL_STORAGE"])
if (platform !== 'android') return
let view = null
let createRequestPermissionListener = uni.createRequestPermissionListener()
createRequestPermissionListener.onRequest((e) => {
})
createRequestPermissionListener.onConfirm((e) => {
if (view && view.close) view.close()
if (view && view.destroy) view.destroy()
view = showView(e)
})
createRequestPermissionListener.onComplete((e) => {
if (view && view.close) view.close()
if (view && view.destroy) view.destroy()
view = null
})
}