问题现象
元服务权限申请系统弹窗可以加reason,是否还需要前置一个弹窗说明申请权限的用途?
背景知识
根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)。
- system_grant:系统授权类型,在该类型的权限许可下,应用被允许访问的数据不会涉及到用户或设备的敏感信息,应用被允许执行的操作不会对系统或者其他应用产生大的不利影响。如果目标权限是system_grant类型,开发者在进行权限申请后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
- user_grant:用户授权类型,在该类型的权限许可下,应用被允许访问的数据将会涉及到用户或设备的敏感信息,应用被允许执行的操作可能对系统或者其他应用产生严重的影响。该类型权限不仅需要在安装包中申请权限,还需要在应用动态运行时,通过发送弹窗的方式请求用户授权。在用户手动允许授权后,应用才会真正获取相应权限,从而成功访问操作目标对象。
解决方案
系统弹窗前不需要开发者开发单独的弹窗提示。当元服务/应用申请user_grant权限时,需要完成以下步骤:
- 在配置文件中,声明元服务/应用需要请求的权限。
- 将元服务/应用中需要申请权限的目标对象与对应目标权限进行关联,让用户明确地知道,哪些操作需要用户向元服务/应用授予指定的权限。
- 运行元服务/应用时,在用户触发访问操作目标对象时应该调用接口,精准触发动态授权弹框。该接口的内部会检查当前用户是否已经授权元服务/应用所需的权限,如果当前用户尚未授予元服务/应用所需的权限,该接口会拉起动态授权弹框,向用户请求授权。
- 检查用户的授权结果,确认用户已授权才可以进行下一步操作。
常见FAQ
Q:请求多权限,有一个权限在设置中已经拒绝,如何再次申请?
A:参考再次向用户申请授权。
Q:上传元服务时,提示“检测到当前软件包声明的权限与隐私协议里面设置的权限不一致,请修改后再提交”。
A:检查包里的权限和隐私政策的权限,去掉实际没有用到的权限。