uniapp 获取用户权限的时候 如果不小心点击了取消权限就会发现,第二次无论怎么点击都无法重新拉起授权界面的按钮;
>(获取用户权限除外 getUserProfile getUserinfo 无论拒绝还是同意每一次都能重新拉起授权)
拒绝授权后就必须进入设置中开启授权,那么怎么直接在小程序中直接跳转设置界面重新打开这一项权限呢?
使用openSetting函数
但是如果你直接在外部(authorize函数得外部)调用openSetting函数 你会发现进入的设置的界面里 没有你需要的重新打开的权限 !!!
这里就是一个则恶心的坑!反正我是搞了老半天才发现的 openSetting拉起设置界面打开某一项拒绝授权的权限时,必须在拉起这项权限的 authorize 函数中的 fail 函数 中使用openSetting函数,且使用这个函数也必须使用一个confirm 方法进行包裹提示!!
代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59pullAuth() { // 读取 小程序已经授权的权限 uni.getSetting({ success(res) { // 判断是否拥有此权限进行拉起授权 和 重新授权功能 if (!res.authSetting['scope.writePhotosAlbum']) { // 未授权此项权限 拉起授界面 uni.authorize({ scope: 'scope.writePhotosAlbum', success() { // 授权成功后 就可以执行 需要权限的 操作函数了 //在这里调用uni.saveImageToPhotosAlbum(OBJECT) // 使用已授权的功能 uni.showToast({ title: '可以使用系统相册存储权限', icon: 'success' }); }, fail(err) { /* 第一次拒绝授权后必须在 uni.authorize的fail中使用 uni.openSetting 才能进入设置界面打开授权按钮 */ uni.showToast({ title: '拒绝授权', icon: 'none' }); // 这里必须经过一个confirm 不然也会出现问题(啥问题我也不知道) uni.showModal({ title: '是否重新授权系统相册的存储功能', success(res) { if (res.confirm) { uni.openSetting({ success() { console.log('开启权限成功'); }, fail() { console.log('开启权限失败'); } }); } else if (res.cancel) { console.log('拒绝开启开启权限'); } } }); } }); } else { //在这里调用uni.saveImageToPhotosAlbum(OBJECT) // 使用已授权的功能 uni.showToast({ title: '已经授权系统相册存储权限' }); } } }); }
最后
以上就是妩媚小懒猪最近收集整理的关于uniapp 拉起授权 (兼容拒绝后重新开启权限)的全部内容,更多相关uniapp内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复