Android 14 功能适配

翻译自Google 开发者平台

行为更改:所有应用

Android 14平台包含可能影响应用程序的行为更改。以下行为更改适用于在Android 14上运行的所有应用程序,无论targetSdkVersion如何。你应该测试你的应用程序,然后根据需要进行修改,以适当地支持这些功能。

确保同时查看仅影响针对Android 14的应用程序的行为更改列表。

核心功能

默认情况下,计划精确报警被拒绝

精确警报用于用户意图通知,或用于需要在精确时间发生的操作。从Android 14开始,大多数新安装的针对Android 13和更高版本的应用程序不再预先授予SCHEDULE_EXACT_ALARM权限。默认情况下,该权限被拒绝。

了解有关调度精确报警权限的更改的更多信息。

缓存应用时,上下文注册的广播将排队

在Android 14上,当应用处于缓存状态时,系统可以将上下文注册的广播放置在队列中。这类似于Android12(API级别31)为异步绑定器事务引入的排队行为。清单声明的广播不排队,应用程序将从缓存状态中删除以进行广播传递。

当应用程序离开缓存状态(例如返回前台)时,系统会发送任何排队广播。某些广播的多个实例可以合并为一个广播。

应用程序只能杀死自己的后台进程

从Android 14开始,当你的应用程序调用killBackgroundProcesses()时,API只能杀死你自己应用程序的后台进程。

如果传入另一个应用程序的包名,此方法对该应用程序的后台进程没有影响,Logcat中将显示以下消息:

包名无效:com.example.anthrapp

您的应用程序不应使用killBackgroundProcesses()API,或试图影响其他应用程序的进程生命周期,即使是在较旧的操作系统版本上。Android的设计是将缓存的应用程序保留在后台,并在系统需要内存时自动关闭它们。如果你的应用程序不必要地杀死了其他应用程序,它可能会降低系统性能并增加电池消耗,这需要稍后重新启动这些应用程序,这比恢复现有的缓存应用程序需要更多的资源。

注意:第三方应用程序不可能改善Android设备的内存、功耗或热性能。您应该确保您的应用程序符合Google Play关于误导性声明的政策。

安全

最低可安装目标API级别

从Android 14开始,targetSdkVersion低于23的应用程序无法安装。要求应用程序满足这些最低目标API级别要求可以提高用户的安全性和隐私性。

恶意软件通常针对较旧的API级别,以绕过较新的Android版本中引入的安全和隐私保护。例如,一些恶意软件应用程序使用targetSdkVersion 22,以避免受到Android 6.0棉花糖(API级别23)于2015年引入的运行时权限模型的影响。Android 14的这一变化使恶意软件更难避免安全和隐私改进。尝试安装针对较低API级别的应用程序将导致安装失败,Logcat中显示以下消息:

INSTALL_FAILED_DEPRECATED_SDK_VERSION:应用程序包必须至少以SDK版本23为目标,但找到7

在升级到Android 14的设备上,targetSdkVersion低于23的任何应用程序都将继续安装。

如果需要测试针对较旧API级别的应用程序,请使用以下ADB命令:

adb安装--绕过低目标sdk块FILENAME.apk

媒体所有者程序包名称可能会被编辑

媒体存储支持对OWNER_PACKAGE_NAME列的查询,该列指示存储特定媒体文件的应用程序。从Android 14开始,除非至少满足以下条件之一,否则该值将被编辑:

存储媒体文件的应用程序具有其他应用程序始终可见的程序包名称。

查询媒体存储的应用程序请求QUERY_ALL_PACKAGES权限。

警告:使用QUERY_ALL_PACKAGES权限必须遵守Google Play策略。

了解更多有关Android如何为隐私目的过滤包可见性的信息。

用户体验

对用户体验不可撤销通知方式的更改

如果你的应用程序向用户显示不可撤销的前台通知,Android 14已经改变了行为,允许用户撤销此类通知。

此更改适用于通过Notification.Builder#setOngoing(true)或NotificationCompat.Builder#setIngoing(true)设置Notification.FLAG_ONGONG_EVENT来阻止用户取消前台通知的应用程序。FLAG_ONGOING_EVENT的行为已更改,以使用户实际上可以取消此类通知。

猜你喜欢

转载自blog.csdn.net/ziyunLLL/article/details/129495523