Android 10(Q)版本适配指南

2020-07-03  本文已影响0人  怡红快绿

Android 10 引入了多项功能和行为变更,例如改进了系统界面、让权限授予更加严格以及限制应用能够操作哪些数据,目的是为了更好地保护用户的隐私并最大限度地提升用户对应用的控制权。这些变更可能意味着应用所依赖的特定行为或数据会与较低版本的平台有所不同,因此开发者需要采取一些措施来应对这些改变。

一、重大变更

外部存储权限变更

1、访问外部存储空间

默认情况下,对于以 Android 10 及更高版本为目标平台的应用,其访问权限范围限定为外部存储,即分区存储。此类应用可以查看外部存储设备内以下类型的文件,无需请求任何与存储相关的用户权限。访问权限范围限定为应用文件和媒体

2、将文件保存到外部存储

对于您要与其他应用共享或允许用户使用计算机访问的文件,将其存储在外部存储上是很好的选择。

请求存储权限确认存储可用后可以保存以下类型的文件:

如果要将文件保存到其他应用可以访问的外部存储上,请使用以下 API 之一:

  • 如果要保存照片、音频文件或视频剪辑,请使用 MediaStore API。
  • 如果要保存任何其他文件(如 PDF 文档),请使用 ACTION_CREATE_DOCUMENT intent,这是存储访问框架的一部分。

如果您不希望媒体扫描程序发现您的文件,请在特定于应用的目录中添加名为 .nomedia 的空文件(请注意文件名中的句点前缀)。这可以防止媒体扫描程序读取您的媒体文件并通过 MediaStore API 将它们提供给其他应用。


在后台运行时访问设备位置信息需要权限

为了让用户更好地控制应用对位置信息的访问权限,Android 10 引入了 ACCESS_BACKGROUND_LOCATION 权限。

ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 权限不同,ACCESS_BACKGROUND_LOCATION 权限仅会影响应用在后台运行时对位置信息的访问权限。除非符合以下条件之一,否则应用将被视为在后台访问位置信息:

要声明您的应用中的某个服务的前台服务类型,请将应用的 targetSdkVersioncompileSdkVersion 设置为 29 或更高版本。详细了解前台服务如何继续执行用户发起的需要访问位置信息的操作

1、以 Android 9 或更低版本为目标平台时自动授予访问权限

如果您的应用在 Android 10 或更高版本上运行,但其目标平台是 Android 9(API 级别 28)或更低版本,则该平台具有以下行为:

2、在设备升级到 Android 10 后访问

如果用户向您的应用授予对设备位置信息的访问权限(ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION),然后将其设备从 Android 9 升级到 Android 10,则系统会自动更新应用已获取的基于位置信息的那组权限。您的应用在设备升级后接收的那组权限取决于应用的目标 SDK 版本及其定义的权限,如下表所示:

设备升级至 Android 10 之后位置权限状态发生的变化

注意:即使在系统自动更新应用对设备位置信息的访问权限之后,用户仍然可以选择更改这种访问权限级别。用户可以选择让应用只能在前台访问位置信息,或者完全撤消使用权。在尝试访问设备的位置信息之前,尤其是在前台服务中,您的应用应检查用户是否仍然允许您的应用接收此类位置信息。

如需详细了解如何在应用在后台运行时检索设备的位置信息,请参阅有关如何定期接收位置信息更新的指南。


针对从后台启动 Activity 的限制

从 Android 10 开始,系统会增加针对从后台启动 Activity 的限制。此项行为变更有助于最大限度地减少对用户造成的中断,并且可以让用户更好地控制其屏幕上显示的内容。只要您的应用启动 Activity 是因用户互动直接引发的,该应用就极有可能不会受到这些限制的影响。

1、将通知作为从后台启动 Activity 的备选方案

几乎在所有情况下,后台应用都应显示有时效性的通知,以便向用户提供紧急信息,而非直接启动 Activity。此类通知的适用情形包括处理来电或正在响铃的闹钟。

这种基于通知的提醒系统可为用户提供以下若干优势:

2、限制的例外情况

在 Android 10 或更高版本上运行的应用只有在满足以下一项或多项条件时,才能启动 Activity:


原文链接:https://developer.android.google.cn/about/versions/10

上一篇 下一篇

猜你喜欢

热点阅读