Android 致力于帮助用户充分利用最新的创新技术,同时始终将用户的安全和隐私视为第一要务。
注意权限
确保公开透明并让用户自主控制应用的使用体验,从而赢得用户信任。
-
根据实现应用功能的具体需要,请求授予最基本的权限。每当对应用进行重大更改时都应审核请求的权限,确认应用的功能仍然需要这些权限。
- 请注意,较高版本的 Android 通常会以注重隐私保护的方式引入无需权限即可访问数据的方法。
- 仅在需要时(而不是在应用启动时)请求权限,以便用户清楚地了解您的应用需要的权限。
- 如果您的应用是在 Google Play 上分发的,Android Vitals 会显示拒绝授予应用所请求权限的用户所占的百分比。对于所需权限最常被拒绝的功能,您可使用这些数据重新评估其设计。
-
按照建议的流程说明应用中的功能为何需要某项权限。
-
请注意,用户或系统可能会多次拒绝该权限。 Android 会尊重用户的选择,忽略来自同一应用的权限请求。
-
当用户拒绝或撤消某项权限时,对用户可使用的功能适当降级。例如,如果用户未授予麦克风使用权限,您可以停用应用的语音输入功能。
-
如果您使用的 SDK 或库会访问受危险权限保护的数据,用户通常会认为是您的应用需要相应的访问权限。请确保您了解您所用的 SDK 所需的权限及其原因。
- 如果您在 Android 11 上测试应用,请使用数据访问审核发现您的代码中和第三方库代码中私有数据受到访问的位置。
尽量减少使用位置信息
如果您的应用请求授予访问位置信息的权限,请帮助用户在掌握充分信息的情况下做出明智的决定。
- 如果您的应用会收集位置信息,请向用户说明应用会如何利用这些信息为他们带来特定的好处。如果您的应用可以在不请求访问任何位置数据的情况下实现其用途,请勿请求位置权限。
- 如果您的应用需要通过蓝牙或 WLAN 将用户的设备与附近的设备配对,请使用不需要位置权限的配套设备管理器。
- 查看您的应用所需的位置精细度级别。粗略位置信息访问权限足以满足大多数与位置相关的用途。
- 在用户进入应用界面时访问位置数据。这样,用户就能更好地了解您的应用为何请求获取位置信息。
- 如果您的应用需要在后台访问位置信息(例如在实现地理围栏时),请确保这种访问对使用应用的核心功能起到至关重要的作用,并且采用一种让用户清楚知道的方式完成。详细了解使用后台位置信息的注意事项。
- 请将您的应用设计为在用户未授予“始终允许”访问位置信息的权限时,针对可用的功能适当降级。在 Android 10 及更高版本中,用户可以将应用的位置信息访问权限限制为仅在应用使用期间允许访问。
- 如果在用户离开应用界面后,应用需要继续访问位置信息才能执行用户启动的持续性任务,请在应用进入后台之前启动前台服务。您可以在 Android 的其中一个生命周期回调(例如
onPause()
)中执行此操作。 - 请勿在后台启动前台服务。您应考虑从通知中启动应用,然后在用户进入应用界面时执行位置代码。
用安全的方式处理数据
注意:您可以在 Google Play 开发者政策中心的用户数据文章页上详细了解什么是敏感数据。
用透明、安全的方式处理敏感数据。
- 让用户了解您的应用会在何时收集、使用或共享敏感数据,并解释原因。
- 尽可能使用分区存储模型。了解如何根据应用的用例迁移到分区存储。
- 始终使用安全网络连接。对于应用的静态数据,请使用 Android 的内置凭据加密。对于传输中的所有数据(无论是不是敏感数据),您都应使用 TLS(SSL 的继任协议)进行传输。
- 包含敏感数据的文件应位于内部存储空间内的应用私有目录中。
- 在 Android 10 中,对于仅与您的应用相关的文件,请将其存储在外部存储设备中的应用专属目录中。详细了解分区存储。
- 如果您需要将敏感数据传递给另一个应用,请使用显式 intent。授予一次性数据访问权限以进一步限制接收方应用的访问权限。
- 即使您的应用在前台运行,最佳做法是显示一个实时通知,告知用户应用正在通过麦克风录制或通过相机拍摄。请注意,在搭载 Android 9 及更高版本系统的设备上,当您的应用在后台运行时,系统不允许使用麦克风或摄像头。
- Jetpack 会提供多个库来提升应用数据的安全性。如需详细了解如何使用 Jetpack Security 库和 Jetpack Preferences 库,请参阅相关指南。
- 请勿在 logcat 消息或应用的日志文件中包含敏感数据。详细了解如何处理用户数据。
使用可重置的标识符
尊重用户的隐私权并使用可重置的标识符。如需了解详情,请参阅唯一标识符最佳做法。
- 请勿访问 IMEI 和设备序列号,因为这些标识符是永久性的。在以 Android 10(API 级别 29)或更高版本为目标平台的应用中,如果您尝试访问这些标识符,会发生 SecurityException。
- 只针对用户分析或广告用例使用广告 ID。这是一项针对 Google Play 中应用的规定。始终尊重用户针对广告跟踪的个性化偏好设置。
- 对于绝大多数非广告用例,使用作用域仅限于应用的私密存储全局唯一 ID (GUID)。
- 使用安全设置 Android ID (SSAID) 在您拥有的应用之间共享状态,而无需要求用户登录帐号。详细了解如何跟踪已退出帐号的用户针对不同应用的偏好设置。