DCloud_App_Array
DCloud_App_Array
  • 发布:2019-11-04 15:31
  • 更新:2020-01-10 17:18
  • 阅读:1654

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

分类:HTML5+

说明

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

读写手机存储权限

应用需要保存运行状态等数据到手机SD卡中,启动时需要获取读写手机存储权限,此权限为基础权限,影响真机运行、wgt升级,用户必须允许才能继续运行,否则应用将退出。

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

申请读写手机存储需要用户授权,会弹出如下提示框:

  • HBuilderX2.4.2及以下版本,用户拒绝此权限则直接退出应用。
  • HBuilderX2.4.3+版本,用户拒绝后键会弹出以下提示框引导用户重新允许

    点击“取消”退出应用;
    点击“确定”重新弹出授权框,如果用户已经勾选“不再询问”则打开应用的设置界面。
    此提示语可在manifest.json中配置
  • HBuilderX2.5.0+开始支持配置应用启动时申请获取手机存储权限,支持以下三种策略
    • none
      应用启动时不申请
    • once
      应用第一次启动时申请,用户可以拒绝
    • always
      应用每次启动都申请,并且用户必须允许,用户拒绝时会弹出以下提示框引导用户重新允许

源码视图配置

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

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

permissionExternalStorage节点数据个数如下:

    "permissionExternalStorage": {  
        "request": "always",  
        "prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"  
     }
  • request
    字符串类型,必填,申请设备信息权限策略,可取值none、once、always。默认值为always。
  • prompt
    字符串类型,可选,用户拒绝时弹出提示框上的内容。
    默认值为:应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。
    国际化配置参考:https://ask.dcloud.net.cn/article/35860#strings
    设置自定义键名称为“dcloud_permission_write_external_storage_message”。

保存后提交云端打包生效

访问设备信息权限

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


华为手机应用的设置中权限列表中为“电话”权限

HBuilderX2.3.8+开始支持配置应用启动时申请获取设备信息权限,支持以下三种策略

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

    此提示框删的文本可自定义,参考下面的prompt字段

默认策略为once,即应用第一次启动时申请

源码视图配置

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

  • uni-app项目
    在 "app-plus" -> "distribute" -> "android" 节点下添加 permissionPhoneState 节点
  • 5+ App项目
    在 "plus" -> "distribute" -> "google" 节点下添加 permissionPhoneState 节点

permissionPhoneState节点数据格式如下:

    "permissionPhoneState": {  
        "request": "always",  
        "prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"  
     }
  • request
    字符串类型,必填,申请设备信息权限策略,可取值none、once、always。默认值为once。
  • prompt
    字符串类型,可选,用户拒绝时弹出提示框上的内容。
    默认值为:为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。
    国际化配置参考:https://ask.dcloud.net.cn/article/35860#strings
    设置自定义键名称为“dcloud_permission_read_phone_state_message”。

保存后提交云端打包生效

5 关注 分享
hzq 553761200@qq.com sql开发者 老哥教教我 377313813@qq.com

要回复文章请先登录注册

DCloud_App_Array

DCloud_App_Array (作者)

回复 隘路前行:
正在做可配置弹出隐私提示框功能,请关注新版本更新日志
2020-01-10 17:18
隘路前行

隘路前行

回复 DCloud_App_Array:
出现警告提示也没用了,我们开发的APP,被第二批通报了,随后被下架了。。。。。包括未经用户同意获取信息和不给存储权限退出,之前都加了警告提示,工信部不认可。看看后续有什么处理办法
2020-01-09 13:51
隘路前行

隘路前行

回复 DCloud_heavensoft:
出现警告提示也没用了,我们开发的APP,被第二批通报了,随后被下架了。。。。。包括未经用户同意获取信息和不给存储权限退出,之前都加了警告提示,工信部不认可
2020-01-09 13:50
136406144@qq.com

136406144@qq.com

回复 DCloud_heavensoft:
请问下app应用一启动会自动往https://service.dcloud.net.cn/collect/plusapp/*发送数据,现在被工信部检测出未经用户同意自动发送数据,面临下架风险,请问该怎么禁止?
2020-01-08 10:04
DCloud_heavensoft

DCloud_heavensoft

回复 kuroko@189.cn:
现在存储权限被拒,不是直接退出,会给警告提示
2019-12-20 19:37
sql开发者

sql开发者

回复 DCloud_App_Array:
工信部这次检查针对的这个问题,更新发通知吧,谢谢,关注!
2019-12-20 18:05
chrens@foxmail.com

chrens@foxmail.com

用标准基座运行安装时默认是开启 【读取手机别别码】,自定义基座以及云打包出来安装时也没有默认开启。
这个需要在哪里配置才可以默认开启【读取手机别别码】?
2019-12-14 11:26
DCloud_App_Array

DCloud_App_Array (作者)

回复 kuroko@189.cn:
后需会支持不获取手机读取权限也可以运行
2019-12-12 19:07
kuroko@189.cn

kuroko@189.cn

回复 DCloud_App_Array:
现在工信部对用户隐私的要求是:“即使用户拒绝所有授权(包括存储权限),也不能直接退出APP,要能继续浏览”,否则新的app不能通过审核,旧的app下架处理。请问下官方能跟进下这事吗,不要用户拒绝存储权限,就直接退,或者警告一下退,这样都不行。要能继续进入APP内部浏览。
2019-11-26 23:51
DCloud_App_Array

DCloud_App_Array (作者)

回复 kuroko@189.cn:
拒绝读取手机存储权限时才会弹出此提示框的。
2019-11-25 12:51