Android 11平台包括可能会影响您的应用程序的行为更改。以下行为更改适用于在Android 11上运行的所有应用,无论targetSdkVersion如何。您应该测试您的应用程序,然后根据需要对其进行修改以适当地支持它们。

JobScheduler API call limits debugging


Android 11为应用程序提供调试支持,以识别潜在的JobScheduler API调用已超过某些速率限制。开发人员可以使用此功能来识别潜在的性能问题。对于将可调试清单属性设置为true的应用程序,超出速率限制的JobScheduler API调用将返回RESULT_FAILURE。设置了限制,以使合法用例不受影响。

 

One-time permissions


在Android 11中,只要您的应用请求与位置,麦克风或摄像头相关的权限,就会向您的应用授予临时的一次性权限。要了解有关此更改的更多信息,请参阅页面上的一次性权限部分,该部分讨论与Android 11中的权限相关的隐私更改。

 

User choice can restrict when a permission dialog appears


Android 11不鼓励重复请求特定权限。如果用户在应用程序在设备上的安装生命周期内两次点按“拒绝”以获取特定权限,则此操作表示“不再询问”。

 

Background location access


如果您的应用定位到Android 11,则无法直接请求对背景位置的全天候访问。即使您的应用定位到Android 10(API级别29)或更低版本,用户也会看到系统对话框,其中包含用于控制前台位置访问的按钮

 

Storage UI


Android 11引入了一些与存储权限相关的面向用户的更改,包括存储运行时权限的名称以及说明应用程序对存储权限的请求的对话框的内容。

Change to ACTION_MANAGE_OVERLAY_PERMISSION intent behavior
从Android 11开始,ACTION_MANAGE_OVERLAY_PERMISSION意向始终将用户带到顶级“设置”屏幕,他们可以在其中授予或撤消应用程序的SYSTEM_ALERT_WINDOW权限。任何包:意图中的数据将被忽略。

在早期版本的Android中,ACTION_MANAGE_OVERLAY_PERMISSION意图可以指定一个程序包,该程序包会将用户带到特定于应用程序的屏幕以管理权限。 Android 11不再支持此功能。相反,用户必须首先选择要授予或撤消其权限的应用程序。此更改旨在通过使许可授予更加有意来保护用户

 

All Files Access


有些应用程序具有核心用例,需要广泛的文件访问权限,例如文件管理或备份和还原操作。他们可以通过声明特殊的MANAGE_EXTERNAL_STORAGE权限来获取“所有文件访问”权限。

 

Non-SDK interface restrictions


Android 11根据与Android开发人员的协作以及最新的内部测试,包括受限制的非SDK接口的更新列表。只要有可能,在限制非SDK接口之前,请确保可以使用公共替代方案。

如果您的应用程序未针对Android 11,则其中的某些更改可能不会立即影响您。但是,尽管您目前可以使用灰名单中的非SDK接口(取决于应用程序的目标API级别),但使用任何非SDK方法或字段始终会带来破坏应用程序的高风险。

如果不确定您的应用程序是否使用非SDK接口,则可以测试您的应用程序以找出答案。如果您的应用程序依赖于非SDK接口,则应开始计划向SDK替代方案的迁移。不过,我们了解到某些应用程序具有使用非SDK接口的有效用例。如果您找不到在应用程序功能中使用非SDK接口的替代方法,则应请求新的公共API。

 

File descriptor sanitizer (fdsan)


Android 10引入了fdsan(文件描述符清理程序)。 fdsan可检测到文件描述符所有权的不当处理,例如使用后关闭和两次关闭。 fdsan的默认模式在Android 11中更改。fdsan现在在检测到错误时中止;以前的行为是记录警告并继续。如果您在应用程序中看到由于fdsan导致的崩溃,请参阅fdsan文档。