行為變更:指定 Android 13 以上版本的應用程式

和先前版本一樣,Android 13 也包含可能影響 應用程式。下列行為變更僅適用於指定的應用程式 搭載 Android 13 以上版本。如果您的應用程式指定 Android 13 以上版本,則應 請視情況修改您的應用程式,以便支援這些行為。

請務必查看影響所有應用程式的行為變更清單 在 Android 13 中運作

隱私權

通知權限會影響前景服務外觀

如果使用者拒絕 通知權限、 使用者不會看到前景服務相關的通知 通知導覽匣。 不過,使用者仍會在 工作管理員, 偵測是否授予通知權限。

鄰近 Wi-Fi 裝置的新執行階段權限

在先前的 Android 版本中,使用者必須授予應用程式 ACCESS_FINE_LOCATION敬上 以便完成一些常見的 Wi-Fi 用途。

因為使用者很難將位置存取權與 Wi-Fi 建立關聯 Android 13 (API 級別 33) 在 NEARBY_DEVICES敬上 權限群組適用於管理裝置連線與附近存取權的應用程式 或是透過 Wi-Fi 連線這項權限 NEARBY_WIFI_DEVICES、 可執行 Wi-Fi 用途,例如:

  • 尋找或連線至附近的裝置,例如印表機或媒體投放裝置。 此工作流程允許應用程式完成下列工作:
    • 從錶帶外接收 AP 資訊,例如透過 BLE。
    • 透過 Wi-Fi Aware 探索及連線至裝置,並使用僅限區域的無線基地台連線。
    • 透過 Wi-Fi Direct 探索裝置並與其連線。
  • 連線至已知的 SSID,例如汽車或智慧住宅裝置。
  • 啟動僅限本機的無線基地台。
  • 範圍與鄰近的 Wi-Fi 感知裝置。

只要應用程式不會透過 Wi-Fi 取得實際位置資訊 API 會在以下情況下要求 NEARBY_WIFI_DEVICES,而非 ACCESS_FINE_LOCATION 指定 Android 13 以上版本並使用 Wi-Fi API。當您宣告 NEARBY_WIFI_DEVICES 權限,強烈建議聲明應用程式絕不會 從 Wi-Fi API 取得實際位置資訊。方法是將 android:usesPermissionFlags 屬性設為 neverForLocation。這項程序 就像您在 Android 12 (API 級別 31) 以上版本中執行的一樣 聲明不得將藍牙裝置資訊用於以下目的: 位置

進一步瞭解如何 要求存取鄰近 Wi-Fi 裝置的權限

精細媒體權限

對話方塊的 2 個按鈕由上而下為「允許」和「禁止」
  允許
圖 1. 使用者看到的系統權限對話方塊 你要求 READ_MEDIA_AUDIO 權限。

如果您的應用程式指定 Android 13 以上版本為目標, 存取其他應用程式內建的媒體檔案 已建立,您必須 要求下列一或多項精細媒體權限,而非 READ_EXTERNAL_STORAGE敬上 權限:

媒體類型 要求權限
圖片和相片 READ_MEDIA_IMAGES
影片 READ_MEDIA_VIDEO
音訊檔案 READ_MEDIA_AUDIO

請先驗證使用者是否已授予相關權限,才能存取其他應用程式的媒體檔案 取得適當的應用程式精細媒體權限

圖 1 顯示要求 READ_MEDIA_AUDIO 權限的應用程式。

如果您同時要求 READ_MEDIA_IMAGES 權限和 同時只有一項系統權限,READ_MEDIA_VIDEO權限 對話方塊。

如果您的應用程式先前授予 READ_EXTERNAL_STORAGE敬上 然後授予所有必要的 READ_MEDIA_* 權限 在升級期間自動執行您可以使用下列 ADB 指令查看 已升級的權限:

adb shell cmd appops get --uid PACKAGE_NAME

如要在背景使用人體感應器,必須取得新權限

Android 13 介紹「使用時」的概念存取 人體感測器,例如心率、溫度和血氧比例。這個 存取模式與系統針對位置 在 Android 10 (API 級別 29) 中)

如果您的應用程式指定 Android 13 版本為目標,且需要人體感應器存取權 為了在背景執行時請求使用者所需的資訊,您必須宣告新的 BODY_SENSORS_BACKGROUND敬上 除了現有的 BODY_SENSORS。 權限。

效能與電池

電池資源使用率

如果使用者將應用程式放在 「限制」狀態 背景電池用量 應用程式指定 Android 13 版本時,系統不會將 BOOT_COMPLETEDLOCKED_BOOT_COMPLETED 播送到 應用程式因其他原因啟動

使用者體驗

媒體控制項衍生自「PlaybackState

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,系統會衍生出 媒體控制選項: PlaybackState 動作。這個 讓系統能顯示功能更豐富的控制項 而且在手機和平板電腦之間保持一致 控制項在其他 Android 平台上顯示,例如 Android Auto Android TV。

圖 2 舉例說明這在手機和平板電腦上呈現的外觀。 。

媒體控制項在手機和平板電腦上的顯示方式
            舉例說明按鈕顯示方式的範例軌
圖 2: 手機和平板電腦上的媒體控制項

在 Android 13 之前,系統會透過 MediaStyle 顯示最多五項動作 通知 (依照新增的順序)。 在精簡模式 (例如收合的快速設定) 中,最高 三個使用 setShowActionsInCompactView() 指定的動作 。

從 Android 13 開始,系統會根據最多五個動作按鈕顯示 PlaybackState,如下表所述。在精簡模式下,只有前三個 動作版位。指定 Android 13 (或不含 Android 13 版本) 的應用程式 不包含 PlaybackState,系統將根據 在 MediaStyle 通知中新增的 Action 清單,如下所述 。

版位 動作 條件
1 播放 PlaybackState 目前的狀態為下列其中一種:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
載入旋轉圖示 PlaybackState 目前的狀態為下列其中一種:
  • STATE_CONNECTING
  • STATE_BUFFERING
暫停 PlaybackState 目前的狀態並非以上皆是。
2 上一頁 PlaybackState 動作包含 ACTION_SKIP_TO_PREVIOUS
自訂 PlaybackState 動作不含 ACTION_SKIP_TO_PREVIOUS,且 PlaybackState自訂動作包含尚未放置的自訂動作。
空白 PlaybackState「extras」包含鍵 SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREVtrue 布林值。
3 繼續 PlaybackState 動作包含 ACTION_SKIP_TO_NEXT
自訂 PlaybackState 動作不含 ACTION_SKIP_TO_NEXT,且 PlaybackState自訂動作包含尚未放置的自訂動作。
空白 PlaybackState「extras」包含鍵 SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXTtrue 布林值。
4 自訂 PlaybackState 自訂動作包含尚未加入的自訂動作。
5 自訂 PlaybackState 自訂動作包含尚未加入的自訂動作。

自訂動作的排列順序取決於加入 PlaybackState

已自動將應用程式顏色主題套用至 WebView 內容

針對指定 Android 13 (API 級別 33) 以上版本的應用程式, setForceDark()敬上 方法已淘汰,因此如果呼叫 方法,會產生免人工管理的結果。

WebView 現在一律會將 根據應用程式的主題屬性,執行媒體查詢 prefers-color-schemeisLightTheme。在其他 字詞,如果 isLightThemetrue 或未指定,則 prefers-color-scheme 會是 light;否則為 dark。這項行為意味著 在下列情況下,系統會自動套用淺色或深色樣式,以符合應用程式的主題 內容都支援。

對大多數應用程式而言,新行為應套用適當的應用程式樣式 但是,您必須測試應用程式,確保 可能已手動控制深色模式設定

如果您仍須自訂應用程式的色彩主題行為,請使用 setAlgorithmicDarkeningAllowed()敬上 方法。為了提供與 Android 舊版本的回溯相容性, 建議您使用對等的 setAlgorithmicDarkeningAllowed()敬上 方法。

請參閱該方法的說明文件,進一步瞭解您可以執行哪些動作 會遇到哪些情況,取決於應用程式的 targetSdkVersion和主題 可以管理叢集設定,像是節點 資源調度、安全性和其他預先設定項目

連線能力

BluetoothAdapter#enable() 和 BluetoothAdapter#disable()已淘汰

針對指定 Android 13 (API 級別 33) 以上版本的應用程式, BluetoothAdapter#enable()BluetoothAdapter#disable() 方法已淘汰,而且一律會 傳回 false

下列類型的應用程式不受這些變更影響:

  • 裝置擁有者應用程式
  • 設定檔擁有者應用程式
  • 系統應用程式

Google Play 服務

廣告 ID 必須具備權限

使用 Google Play 服務廣告的應用程式 ID 和 您必須指定 Android 13 (API 級別 33) 以上版本。 在應用程式的AD_ID 資訊清單檔案如下所示:

<manifest ...>
    <!-- Required only if your app targets Android 13 or higher. -->
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

    <application ...>
        ...
    </application>
</manifest>

如果您的應用程式在指定 Android 13 或 較高的值,系統會自動移除廣告 ID,並以字串取代 零時分。

如果應用程式所使用的 SDK,宣告了程式庫的 AD_ID 權限 然後,權限會與應用程式的資訊清單檔案合併 預設值。在此情況下,您不需要在應用程式的 資訊清單檔案

詳情請參閱「廣告 ID (位於 也可以參閱 Play 管理中心說明的資訊

更新非 SDK 限制

Android 13 提供最新的受限制非 SDK 清單 介面是以與 Android 開發人員合作為基礎,並採用 內部測試。我們會盡可能確保公開的替代方案 ,然後再限制非 SDK 介面使用

如果您的應用程式並不是以 Android 13 為目標版本,則此處可能有部分變更 可能無法立即對您造成影響不過,雖然您目前可以使用 非 SDK 介面 (視應用程式的目標 API 而定) level)、 使用任何非 SDK 方法或欄位,都有很高的風險 應用程式。

如果不確定應用程式是否使用非 SDK 介面,可以測試 應用程式 讓我們一探究竟。如果您的應用程式仰賴非 SDK 介面,建議您著手規劃 轉換至 SDK 替代方案我們瞭解有些應用程式 使用非 SDK 介面的有效用途。如果您找不到替代選項 針對應用程式中的某個功能使用非 SDK 介面,則應要求 新的公用 API

如要進一步瞭解此 Android 版本中的變更,請參閱 更新 Android 13 的非 SDK 介面限制。 如要進一步瞭解非 SDK 介面的一般資訊,請參閱非 SDK 的相關限制 介面