uniapp解决上架华为应用市场审核要求-监听权限的申请

支持android平台全局监听权限的申请。当申请权限时,会在页面顶部显示申请权限的目的。主要解决上架华为应用市场审核要求:APP在调用终端权限时,应同步告知用户申请该权限的目的。

因为如果不提示,你上架应用市场会被打打回来

Tips

插件需要云打包生成自定义基座才会生效。

如果在其他插件中跳转到单独的activity并在此activity中申请权限,当前插件将无法展示。这种情况下可以在插件跳转之前主动申请权限。

注册权限监听事件

registerRequestPermissionTipsListener(listener)

取消注册权限监听事件

unregisterRequestPermissionTipsListener(listener)

RequestPermissionTipsListener的属性值

名称 类型 描述 必填

onRequest (permissions:Array)=>void 申请系统权限回调,permissions为触发权限申请的所有权限 否

onConfirm (permissions:Array)=>void 弹出系统权限授权框回调,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>
相关推荐
2501_915909063 小时前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview
不爱说话郭德纲5 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
snotJam7 小时前
关于Uniapp的Android自定义基座使用
android·uni-app
今年下半年1 天前
【微信小程序】uni-app + Vue3 + Vite 的小程序项目实现「进入指定范围才能打卡」的考勤功能
微信小程序·uni-app·定位·考勤
郑州光合科技余经理5 天前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
遗憾随她而去.6 天前
uniApp跨端开发: 解决不同平台显示差异问题
uni-app
程序鉴定师9 天前
2026年深圳小程序/App开发公司技术选型指南:从架构设计到交付标准全维度评估
java·小程序·uni-app·php·objective-c
Q26433650239 天前
【有源码】基于uni-app的旅游行程规划小程序-基于微信小程序的智慧文旅综合服务平台
java·微信小程序·小程序·uni-app·毕业设计·springboot·源代码
qq_3168377510 天前
阿里云百炼 fun-asr-realtime uniapp vue3 调用
javascript·vue.js·uni-app
特创数字科技10 天前
uniapp 图片全能处理|全平台支持(鸿蒙、安卓、苹果、web),实现九宫格、水印、滤镜、压缩、拼图
uni-app