更新记录
1.0.3(2024-10-18) 下载此版本
修复4.25版引起的插件回调只触发一次的问题。
1.0.2(2024-09-05) 下载此版本
修复uni.chooseImage或者其他部分情况下弹窗不显示的bug。
1.0.1(2024-05-30) 下载此版本
修复云打包可能报错的bug
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.0,Android:4.4,iOS:不支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
注意:uni-registerRequestPermissionTips需要云打包生成自定义基座才会生效。
registerRequestPermissionTipsListener(listener?)
注册权限监听事件
unregisterRequestPermissionTipsListener(listener?)
取消注册权限监听事件
RequestPermissionTipsListener的属性值
名称 | 类型 | 描述 | 必填 |
---|---|---|---|
onRequest | (permissions:Array |
申请系统权限回调,permissions为触发权限申请的所有权限 | 否 |
onConfirm | (permissions:Array |
弹出系统权限授权框回调,permissions为触发弹出权限授权框的所有权限 | 否 |
onComplete | (permissions:UTSJSONObject)=>void | 权限申请完成回调,permissions包括权限及权限的状态。grant 为权限已获取,denied 为权限已拒绝 |
否 |
setRequestPermissionTips(UTSJSONObject)
设置权限监听的说明。支持针对权限设置具体的说明。
参考:{"android.permission.CAMERA":"<p>相机权限申请说明</p>"}
安卓权限列表可参考谷歌官方文档。
权限申请说明基于原生TextView实现,可以实现加载html内容,支持的标签及属性可参考:
<b> 或 <strong>:加粗文本。
<i> 或 <em>:斜体文本。
<u>:下划线文本。
<sup>:上标文本。
<sub>:下标文本。
<tt>:等宽字体文本。
<big>:放大字体。
<small>:缩小字体。
<strike> 或 <s> 或 <del>:带有删除线的文本。
<p>:段落。
<div>:块级容器。
<h1>,<h2>,<h3>,<h4>,<h5>,<h6>:区域标题元素。
<ul>, <ol>, <li>:无序列表和有序列表。
<br>:换行。
<font color="..."> 和 <font size="...">:设置文本颜色和大小。
示例
<script>
import {
registerRequestPermissionTipsListener,
unregisterRequestPermissionTipsListener,
setRequestPermissionTips
} from "@/uni_modules/uni-registerRequestPermissionTips"
var PermissionTips = {
"android.permission.CAMERA": "<h4 style=\"font-size:40px;\">正在读取通讯录权限</h4><font color=#cccccc>通讯录权限不会获取任何信息,请注意</font>",
"android.permission.READ_PHONE_STATE": "<h4 style=\"font-size:40px;\">正在读取网络状态权限</h4><font color=#cccccc>通讯录权限不会获取任何信息,请注意通讯录权限不会获取任何信息,请注意通讯录权限不会获取任何信息,请注意</font>"
}
export default {
onLaunch: function() {
var brand = uni.getSystemInfoSync().deviceBrand
setRequestPermissionTips(PermissionTips)
registerRequestPermissionTipsListener({
onRequest: (e) => {
console.log(e)
},
onConfirm: (e) => {
console.log(e)
},
onComplete: (e) => {
// 华为手机在权限禁止之后,再次申请权限不会出现权限申请框。此时应该引导用户去系统设置开启此权限,不应该频繁申请。
if (brand.toLowerCase() == "huawei") {
var tips = {}
var hasDeniedPermission = false
for (var k in PermissionTips) {
if (e[k] != "denied") {
tips[k] = PermissionTips[k]
} else {
hasDeniedPermission = true
}
}
setRequestPermissionTips(tips) // 更新弹框提醒,防止华为手机不出现权限申请框时权限提醒框闪烁的情况
if (hasDeniedPermission)
uni.showModal({
content: "权限已经被拒绝,请前往设置中开启"
})
}
}
})
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
onExit: function() {
unregisterRequestPermissionTipsListener(null)
}
}
</script>