uniapp 启动时获取电话权限的解决方法

Android 平台应用启动时读写手机存储、访问设备信息(如 IMEI)等权限策略及提示信息

Android 平台从 6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取。
因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许。

应用需要保存运行状态等数据到手机 SD 卡中,启动时需要获取读写手机存储权限,此权限为基础权限,影响真机运行、wgt 升级。

注意:此权限目标不是要访问相册,是 Android 把相册写入权限和存储写入权限合并在一个权限里了。
注意:wgt 热更新是应用市场不乐见的,不建议明显提示给用户或告知应用市场

访问设备信息权限

Android 平台应用获取设备信息(如 IMEI、IMSI 等),统计、推送、广告等业务功能依赖这些信息。
此权限不是必选,拒绝此权限不影响 App 端基座运行。但拥有本权限可以给开发者提供更准确的统计报表。
而申请获取这些信息需要用户授权,会弹出如下提示框:

源码视图配置

打开 manifest.json 文件,切换到“源码视图”项

uni-app 项目
在”app-plus” -> “distribute” -> “android” 节点下添加 permissionExternalStorage 节点
5+ App 项目
在 “plus” -> “distribute” -> “google” 节点下添加 permissionExternalStorage 节点

电话权限配置

"permissionPhoneState": {
    "request": "none",
    "prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
  }

request 权限说明

// 应用启动时不申请
"request": "none",
// 应用第一次启动时申请,用户可以拒绝
"request": "once",
// 应用每次启动都申请,并且用户必须允许,用户拒绝时会弹出以下提示框引导用户重新允许
"request": "always",

读写手机存储权限

"permissionExternalStorage": {
    "request": "none",
    "prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
  }

设置完毕后 应用启动时就不会出现获取权限的弹窗了

在上架某些应用商量时可以通过检测(此配置不一定通过,但能大幅度提高审核标准)

uniapp 官方说明 https://ask.dcloud.net.cn/article/36549

标题: uniapp 启动时获取电话权限的解决方法

链接: https://lyboy6.github.io/blog/2022/09/23/uniapp-prompt.html

版权声明: 若无特殊标注皆为 yu_十三 原创版权, 转载请以链接形式注明作者及原始出处

最后编辑时间: 2022-10-12