Android 中的权限( 二 )


许多运行时权限会访问用户私有数据 , 这是一种特殊的受限数据 , 其中包含可能比较敏感的信息 。 **例如 , 位置信息和联系信息就属于用户私人数据 。
麦克风和摄像头可用于获取特别敏感的信息 。 因此 , 该系统会帮助您说明应用获取这类信息的原因 。
系统会为运行时权限分配“dangerous”保护级别 , 如权限API参考文档页面中所示 。
特殊权限
特殊权限与特定的应用操作相对应 。 只有平台和原始设备制造商(OEM)可以定义特殊权限 。 此外 , 如果平台和OEM想要防止有人执行功能特别强大的操作(例如通过其他应用绘图) , 通常会定义特殊权限 。
系统设置中的特殊应用访问权限页面包含一组用户可切换的操作 。 其中的许多操作都以特殊权限的形式实现 。
每项特殊权限都有自己的实现细节 。 如需查看使用每项特殊权限的说明 , 请访问权限API参考文档页面 。 系统会为特殊权限分配“appop”保护级别 。
最佳做法
应用权限基于系统安全功能 , 并有助于Android支持与用户隐私相关的以下目标:
控制:用户可以控制他们与应用分享的数据 。
透明度:用户了解应用使用了哪些数据以及应用为何访问相关数据 。
数据最小化:应用仅访问和使用用户调用的特定任务或操作所需的数据 。
本部分将介绍一组在应用中有效使用权限的核心最佳做法 。 如需详细了解如何在Android中使用权限 , 请访问应用权限最佳做法页面 。
请求最少数量的权限
当用户在应用中请求执行特定操作时 , 应用应当只请求完成该操作所需的权限 。 根据您使用权限的方式 , 您可以通过其他方式实现应用的用例 , 而无需依赖于访问敏感信息 。
将运行时权限与特定操作相关联
尽可能往后推迟到在应用的用例流程中请求权限 。 例如 , 如果应用允许用户向他人发送语音消息 , 请等到用户已导航到消息屏幕并已按下发送语音消息按钮后再请求权限 。 待用户按下该按钮后 , 应用再请求麦克风使用权限 。
考虑应用的依赖项
添加某个库时 , 您也会继承它的权限要求 。 请注意每个依赖项所需的权限以及这些权限的用途 。
公开透明
请求权限时 , 请清晰说明您要访问的内容以及访问原因 , 以便用户可以做出明智的决策 。
以显式方式访问系统
当您访问敏感数据或硬件(例如摄像头或麦克风)时 , 如果系统尚未提供这些指示标志 , 请在应用中持续提供指示 。 此提醒可帮助用户确切了解应用何时会访问受限数据或执行受限操作 。
系统组件中的权限
权限不仅仅用于请求系统功能 。 应用的系统组件可以限制哪些其他应用可以与您的应用交互 , 如介绍如何限制与其他应用的交互的页面中所述 。