一、现象

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

 

posted on 2020-11-19 15:09  小老虎网络  阅读(2370)  评论(0编辑  收藏  举报