html5动态权限管理,关于动态权限的提示进入系统设置问题解决方案

var permTxt = {

'camera': '相机/拍照/录像',

'contacts': '联系人读取/写入',

'microphone': '麦克风',

'location': '位置信息',

'notification': '状态栏通知',

'calendar': '日历读取/写入',

'phone': '拨打电话',

'sms': '短信',

'storage': '存储空间'

};

/*申请动态权限*/

Cor.confirmPermission = function(perm_, callback) {

var permArr = perm_.split(',');

var isAllGranted = Cor.hasPermission(permArr, callback);

if (!isAllGranted) {

//用户选择拒绝不再询问的后下次启动APP不再请求权限

if (Cor.getVal('COR_NEVER') !== 'true') {

Cor.requestPermission(permArr, callback);

}

} else {

Cor.delVal('COR_NEVER');

console.log('请求的权限已全部打开>>>>>');

}

}

var curName = '';

Cor.hasPermission = function(permArr, callback) { //判断是否有权限

var hasPerm = api.hasPermission({ list: permArr });

console.log('hasPerm:' + JSON.stringify(hasPerm));

console.log('检测是否有权限,name:权限名称; granted:授予,false代表没有授权');

//默认1为有权限,0为无权限

var temp = 1; var allTemp = 1; curName = '';

for (var i = 0; i < hasPerm.length; i++) {

if (!hasPerm[i].granted) {

temp = 0;

curName += '[' + permTxt[hasPerm[i].name] + ']' + '\t';

} else {

temp = 1;

}

allTemp *= temp;

}

console.log("检测权限列表是否有授权,结果为:"+((allTemp === 1) ? "全部权限打开" : "存在部分权限或者全部权限被禁用"));

return (allTemp === 1); //只要权限列表中存在至少一个权限没有授权,就认为没有完全授权

}

Cor.requestPermission = function(permArr, callback) {

api.requestPermission({ list: permArr }, function(ret, err) {

console.log('再次检测是否授权>>>>>>>>>>>>>>>>>>>>>>>>>> ');

isAllGranted = Cor.hasPermission(permArr, callback); //用户做出选择后需要再次检测是否有权限

if (!isAllGranted) {

// 记录了选择手动设置的状态到本地文件,下次就不会弹窗询问,只能用户自己去设置页授权了

// 多个权限中,只要存在有一个权限为拒绝不再询问,那么其他拒绝的权限都会等同被忽略,只要用户自己到设置页面中全部开启了,才能恢复

Cor.setVal('COR_NEVER', ret.never ? 'true' : 'false');

Cor.permConfirmDialog(curName, ret.never, function(ret, err, rightBtnTitle) {

// 如果是手动设置(拒绝不再询问),就能再次请求,如果强制退出,就不再请求

console.log(rightBtnTitle==='手动设置'?'用户选择拒绝,不再询问':'用户选择拒绝授权');

console.log(rightBtnTitle);

if (rightBtnTitle==='手动设置') {  Cor.delVal('COR_NEVER');}// 因为ret.never 在这个方法里没有效果,所以改传rightBtnTitle

Cor.requestPermission(permArr, callback); //请求权限

});

} else {

console.log('请求的权限已全部打开');

Cor.delVal('COR_NEVER');

}

});

}

Cor.permConfirmDialog = function(content, isNever, callback) { //权限说明对话框

Cor.confirmDialog(

'权限说明',

'获取"' + content + '"权限被拒绝,对应功能可能无法正常使用!',

'残忍退出',

isNever ? '手动设置' : '重新授权',

callback);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值