宣告前景服務並要求權限

在應用程式資訊清單中,使用 <service> 元素宣告每項應用程式前景服務。針對每項服務,請使用 android:foregroundServiceType 屬性,宣告服務執行哪種工作。

此外,請要求前景服務所需的任何權限。

版本相容性

宣告前景服務和要求權限的規定會因應用程式指定的 API 級別而異。本頁將說明指定 API 級別 34 以上版本的應用程式相關規定。如要瞭解早期平台版本中前景服務的變更,請參閱「前景服務的變更」。

在應用程式資訊清單中宣告前景服務

以下程式碼說明如何宣告媒體播放前景服務。你可以使用這類服務播放音樂。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
  <application ...>

    <service
        android:name=".MyMediaPlaybackService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="false">
    </service>
  </application>
</manifest>

程式碼的重點

  • 在本範例中,服務只有一種類型 media。如果您的服務適用於多種類型,請使用 | 運算子將這些類型分開。舉例來說,如果您的服務使用攝影機和麥克風,請按以下方式聲明:

    android:foregroundServiceType="camera|microphone"
    
  • 視應用程式指定的 API 級別而定,您可能必須在應用程式資訊清單中宣告前景服務。如要瞭解特定 API 級別的需求,請參閱「前景服務異動」一文。

    如果您嘗試建立前景服務,但其類型未在資訊清單中宣告,系統會在呼叫 startForeground() 時擲回 MissingForegroundServiceTypeException

    即使不需要,宣告所有前景服務並提供服務類型也是最佳做法。

要求前景服務權限

以下程式碼說明如何為使用相機的前景服務要求權限。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>

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

程式碼的重點

  • 這段程式碼採用了指定 API 級別 34 以上版本為目標版本的應用程式最佳做法。