行為變更:所有應用程式

Android 14 平台包含可能對應用程式造成影響的行為變更。無論 targetSdkVersion 為何,當應用程式在 Android 14 上執行時,下列行為變更將會套用至所有應用程式。您應測試應用程式,並視需要修改,以便在適當情況下支援新版本功能。

另請務必查看僅對指定 Android 14 為目標版本的應用程式造成影響的行為變更

核心功能

根據預設,系統會拒絕排定精確鬧鐘

精確鬧鐘是針對使用者需求或需要在確切時間發生的操作所設計的通知。自 Android 14 起,SCHEDULE_EXACT_ALARM權限不再預先授予以 Android 13 以上版本為目標所安裝的最新應用程式;該權限依預設為拒絕狀態。

進一步瞭解精準鬧鐘排程權限變更

在應用程式快取期間,註冊使用情境的廣播訊息會排入佇列

在 Android 14 中,當應用程式處於快取狀態時,系統可能會將已註冊使用情境廣播訊息排入佇列。這與 Android 12 (API 級別 31) 針對非同步繫結機制交易所推出的排入佇列行為類似。系統不會將宣告資訊清單的廣播訊息排入佇列,應用程式也會自快取狀態移除,以便進行播送。

當應用程式結束快取狀態 (例如返回前景) 時,系統會傳送所有排入佇列的廣播訊息。某些廣播訊息的多個執行個體可以合併為單一廣播訊息。

應用程式只能終止自己的背景處理程序

自 Android 14 起,當應用程式呼叫 killBackgroundProcesses() 時,API 只能終止您自有應用程式的背景處理程序。

如果您傳入其他應用程式的套件名稱,此方法不會對該應用程式的背景處理程序產生影響,而且 Logcat 也會顯示以下訊息:

Invalid packageName: com.example.anotherapp

您的應用程式不應使用 killBackgroundProcesses() API,或嘗試影響其他應用程式的處理程序生命週期,即使是在舊版 OS 上也是如此。Android 的設計是為了在背景作業中保留快取的應用程式,並且能夠在系統需要記憶體時自動終止這些應用程式。如果您的應用程式不小心關閉其他應用程式,可能會因為需要在稍後重新啟動這些應用程式 (比起恢復現有已快取的應用程式會耗用更多的資源),進而降低系統效能並增加電池用量。

安全性

可安裝的目標 API 級別下限

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

恶意软件通常会以较旧的 API 级别为目标平台,以绕过在较新版本 Android 中引入的安全和隐私保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 14 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示以下消息:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23, but found 7

在升级到 Android 14 的设备上,targetSdkVersion 低于 23 的所有应用都将继续保持安装状态。

如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:

adb install --bypass-low-target-sdk-block FILENAME.apk

媒體擁有者的套件名稱可能會被遮蓋

The media store supports queries for the OWNER_PACKAGE_NAME column, which indicates the app that stored a particular media file. Starting in Android 14, this value is redacted unless at least one of the following conditions is true:

  • The app that stored the media file has a package name that is always visible to other apps.
  • The app that queries the media store requests the QUERY_ALL_PACKAGES permission.

Learn more about how Android filters package visibility for privacy purposes.

使用者體驗

授予相片和影片的部分存取權

在 Android 14 中,當應用程式要求存取 Android 13 (API 級別 33) 所推出的任何視覺媒體時,使用者可授予相片和影片的部分存取權:READ_MEDIA_IMAGESREAD_MEDIA_VIDEO

新的對話方塊會顯示下列權限選項:

  • 選取相片和影片:Android 14 的新功能。使用者選取可由應用程式使用的特定相片和影片。
  • 全部允許:使用者授予程式庫完整權限,可存取裝置上的所有相片和影片。
  • 不允許:使用者拒絕所有存取要求。

您可以宣告新的 READ_MEDIA_VISUAL_USER_SELECTED 權限,以便更妥善地處理這項變更。進一步瞭解如何在使用者授予媒體程式庫部分存取權的情況下提供支援

安全的全螢幕意圖通知

在 Android 11 (API 級別 30) 版本中,任何應用程式可在手機鎖定時使用 Notification.Builder.setFullScreenIntent 傳送全螢幕意圖。您可以在 AndroidManifest 中宣告 USE_FULL_SCREEN_INTENT 權限,以便在安裝應用程式時自動授予這項權限。

全螢幕意圖通知是專為需要使用者立即處理的高度優先通知設計,例如:來電或使用者設定的鬧鐘。從 Android 14 開始,只有提供通話和鬧鐘功能的應用程式,才可以使用這項權限。凡是不符合此設定檔的任何應用程式,Google Play 商店都會撤銷預設的 USE_FULL_SCREEN_INTENT 權限。

在使用者更新至 Android 14 之前,這項權限在手機應用程式中仍會保持啟用狀態。使用者可選擇啟用或停用權限。

您可以使用新的 API NotificationManager.canUseFullScreenIntent 檢查應用程式是否具備此權限;如果沒有,應用程式可以使用新的意圖 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT 啟動設定頁面,以供使用者授予權限。

針對使用者無法關閉通知的情況進行變更

如果您的应用向用户显示不可关闭的前台通知,请注意:Android 14 已更改此行为,允许用户关闭此类通知。

这项变更适用于通过 Notification.Builder#setOngoing(true)NotificationCompat.Builder#setOngoing(true) 设置 Notification.FLAG_ONGOING_EVENT 来阻止用户关闭前台通知的应用。FLAG_ONGOING_EVENT 的行为已发生变化,使用户实际上能够关闭此类通知。

在以下情况下,此类通知仍不可关闭:

  • 当手机处于锁定状态时
  • 如果用户选择全部清除通知操作(有助于防止意外关闭)

此外,这一新行为不适用于以下用例中的不可关闭通知:

  • 使用 MediaStyle 创建的通知
  • 安全和隐私用例的政策限制使用
  • 企业设备政策控制器 (DPC) 和支持软件包

以更清楚的方式顯示資料安全性資訊

為了加強使用者隱私,Android 14 會增加系統顯示您在 Play 管理中心表單中宣告的資訊地點數量。目前,使用者可以在 Google Play 應用程式商店資訊的資料安全性部分查看這項資訊。

建議您查看應用程式的位置資料分享政策,並撥冗為應用程式的 Google Play「資料安全性」專區進行妥善更新。

詳情請參閱這份指南,瞭解 Android 14 如何以更清楚的方式顯示資料安全性資訊。

無障礙設定

非線性字型縮放至 200%

Starting in Android 14, the system supports font scaling up to 200%, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG).

If you already use scaled pixels (sp) units to define text sizing, then this change probably won't have a high impact on your app. However, you should perform UI testing with the maximum font size enabled (200%) to ensure that your app can accommodate larger font sizes without impacting usability.