前景服務變更

前景服務說明文件說明瞭 Android 前景服務的目前行為。無論應用程式是否以最新版 Android 為目標,這份文件都提供適用於大多數應用程式的最佳做法指南。

本頁說明前台服務的最新重大變更,以及未指定最新版 Android 平台時,對應用程式的影響。在許多情況下,如果應用程式指定的 API 級別較高,則原本可選用的最佳做法會變成必要做法。

Android 16 (API 級別 36)

無論指定哪個 API 級別,在 Android 16 以上版本執行的應用程式都會受到下列變更影響:

Android 15 (API 級別 35)

如果應用程式的目標 API 級別為 35 以上,則須符合下列規定:

Android 14 (API 級別 34)

如果應用程式指定 API 級別 34 以上,則須符合下列規定:

  • 您必須聲明所有前景服務及其服務類型。
  • 應用程式必須為前景服務執行的工作類型要求適當的權限類型。每種前景服務類型都有對應的權限類型。舉例來說,如果應用程式啟動使用攝影機的前景服務,您必須同時要求 FOREGROUND_SERVICEFOREGROUND_SERVICE_CAMERA 權限。如果應用程式指定 API 級別 34 以上版本,但未要求適當的特定權限,系統會擲回 SecurityException

Android 12 (API 級別 31)

如果應用程式的目標版本為 API 級別 31 以上,則須符合下列規定:

  • 應用程式在背景執行時,不得啟動前景服務 (少數特定例外情況除外)。如要瞭解詳情,以及這項規則的例外情形,請參閱「從背景啟動前景服務的限制」。

Android 11 (API 級別 30)

如果應用程式的目標 API 級別為 30 以上,則須符合下列規定:

  • 如果應用程式的前景服務使用相機或麥克風,應用程式必須聲明服務,並分別使用 cameramicrophone 服務類型。

Android 10 (API 級別 29)

如果應用程式指定 API 級別 29 以上版本,則須符合下列規定:

  • 如果應用程式的前景服務使用位置資訊,應用程式必須聲明服務,並使用 location 服務類型。

Android 9 (API 級別 28)

Android 9 導入了 FOREGROUND_SERVICE 權限。在 Android 9 上執行的應用程式如要使用前景服務,就必須具備這項權限。

如果指定 API 級別 28 以上版本的應用程式嘗試建立前景服務,但未要求 FOREGROUND_SERVICE 權限,系統會擲回 SecurityException