一、现象
1、我们发现您的应用提示获取“存储”等敏感权限,用户不同意时强制退出应用。
二、解决
HBuilderX2.5.0+开始支持配置应用启动时申请获取手机存储权限,支持以下三种策略
none 应用启动时不申请
once 应用第一次启动时申请,用户可以拒绝
always 应用每次启动都申请,并且用户必须允许,用户拒绝时会弹出以下提示框引导用户重新允许
1、云打包
打开manifest.json文件,切换到“源码视图”项
uni-app项目
在"app-plus" -> "distribute" -> "android" 节点下添加 permissionExternalStorage 节点
5+ App项目
在 "plus" -> "distribute" -> "google" 节点下添加 permissionExternalStorage 节点
(1)、存储权限提示语配置
"permissionExternalStorage" : {
"request" : "once",
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
}
(2)、读取手机状态权限配置
"permissionPhoneState" : {
"request" : "once",
"prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
},
如:
2、离线打包
== 提示语配置: 在主项目的strings.xml中添加如下字段。strings.xml位于 项目目录/src/main/res/values下,如果文件或文件夹不存在,直接新建即可。
(1)、存储权限提示语配置
<resources>
<string name="dcloud_permission_write_external_storage_message">应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。</string>
</resources>
(2)、读取手机状态权限配置
<resources>
<string name="dcloud_permission_read_phone_state_message">为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。</string>
</resources>
== 弹窗配置: 在androidManifest.xml的application节点下添加如下字段。
(2)、存储权限弹窗配置
<application>
<meta-data android:name="DCLOUD_WRITE_EXTERNAL_STORAGE" android:value="once"/>
</application>
(2)、读取手机状态弹窗配置
<application>
<meta-data android:name="DCLOUD_READ_PHONE_STATE" android:value="once"/>
</application>
三、总结
官方链接: https://ask.dcloud.net.cn/article/36549