93 lines
3.0 KiB
JavaScript
93 lines
3.0 KiB
JavaScript
function showView(permissions) {
|
|
// #ifdef APP-PLUS
|
|
const permissionTipsArr = [{
|
|
"keyName": "android.permission.INTERNET",
|
|
"title": '使用网络权限',
|
|
"content": '与服务器进行数据交换,如同步用户数据、获取最新信息等'
|
|
}, {
|
|
"keyName": "android.permission.READ_EXTERNAL_STORAGE",
|
|
"title": '读写SD卡权限',
|
|
"content": '访问用户的媒体库,如照片相册等'
|
|
}, {
|
|
"keyName": "android.permission.WRITE_EXTERNAL_STORAGE",
|
|
"title": '读写SD卡权限',
|
|
"content": '访问用户的媒体库,如照片相册等'
|
|
}, {
|
|
"keyName": "android.permission.READ_PHONE_STATE",
|
|
"title": '读取设备标识权限',
|
|
"content": '根据设备特征提供定制化的用户体验'
|
|
}, {
|
|
"keyName": "android.permission.CAMERA",
|
|
"title": '拍照权限',
|
|
"content": '请求相机权限,使用相机,用于扫描二维码或者上传图片'
|
|
}, {
|
|
"keyName": "android.permission.ACCESS_COARSE_LOCATION",
|
|
"title": '定位权限',
|
|
"content": '根据商家位置为用户展示附近的商家、餐厅等信息'
|
|
}, {
|
|
"keyName": "android.permission.ACCESS_FINE_LOCATION",
|
|
"title": '定位权限',
|
|
"content": '根据商家位置为用户展示附近的商家、餐厅等信息'
|
|
},{
|
|
"keyName": "android.permission.CALL_PHONE",
|
|
"title": '拨打电话权限',
|
|
"content": '请求拨打电话权限,用于联系用户或者平台'
|
|
}]
|
|
const permissionTips = Array.isArray(permissionTipsArr) ? permissionTipsArr.reduce((accumulator, {
|
|
keyName,
|
|
title,
|
|
content,
|
|
}) => {
|
|
accumulator[keyName] =
|
|
`<div class='tips-item'><div class='title'>${title}</div><div class='center'>${content}</div></div>`;
|
|
return accumulator;
|
|
}, {}) : {};
|
|
let tips = ''
|
|
permissions.map(key => {
|
|
if (permissionTips[key]) {
|
|
tips += permissionTips[key]
|
|
} else {
|
|
console.log(key + '未配置提示语');
|
|
}
|
|
})
|
|
if (!tips) 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',
|
|
}, {
|
|
tips,
|
|
}
|
|
)
|
|
wv.show()
|
|
return wv
|
|
// #endif
|
|
return null
|
|
}
|
|
export function permissionListener() {
|
|
// showView(["android.permission.CAMERA", "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_EXTERNAL_STORAGE"])
|
|
let view = null
|
|
let createRequestPermissionListener = uni.createRequestPermissionListener();
|
|
createRequestPermissionListener.onRequest((e) => {
|
|
console.log('onRequest', e);
|
|
});
|
|
createRequestPermissionListener.onConfirm((e) => {
|
|
console.log('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
|
|
console.log('onComplete', e);
|
|
});
|
|
}
|