Deklarowanie usług działających na pierwszym planie i proszenie o uprawnienia

W pliku manifestu aplikacji zadeklaruj każdą usługę na pierwszym planie za pomocą elementu <service>. W przypadku każdej usługi użyj atrybutu android:foregroundServiceType, aby określić, jakie zadania wykonuje usługa.

Dodatkowo poproś o uprawnienia potrzebne do usług na pierwszym planie.

Zgodność wersji

Wymagania dotyczące deklarowania usług na pierwszym planie i proszenia o przyznanie uprawnień różnią się w zależności od poziomu interfejsu API, na który jest kierowana aplikacja. Na tej stronie opisano wymagania dotyczące aplikacji kierowanych na interfejs API na poziomie 34 lub wyższym. Informacje o zmianach w usługach działających na pierwszym planie w wcześniejszych wersjach platformy znajdziesz w artykule Zmiany w usługach działających na pierwszym planie.

Deklarowanie usług na pierwszym planie w pliku manifestu aplikacji

Poniższy kod pokazuje, jak zadeklarować usługę odtwarzania multimediów na pierwszym planie. Możesz używać takiej usługi do odtwarzania muzyki.

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

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

Najważniejsze informacje o kodzie

  • W tym przykładzie usługa ma tylko jeden typ: media. Jeśli do Twojej usługi stosuje się kilka typów, rozdziel je operatorem |. Jeśli na przykład usługa używa kamery i mikrofonu, zadeklaruj to w ten sposób:

    android:foregroundServiceType="camera|microphone"
    
  • W zależności od poziomu interfejsu API, na który jest kierowana aplikacja, może być wymagane zadeklarowanie usług na pierwszym planie w pliku manifestu aplikacji. Wymagania dotyczące poszczególnych poziomów interfejsu API są opisane w artykule Zmiany w usługach na pierwszym planie.

    Jeśli spróbujesz utworzyć usługę na pierwszym planie, a jej typ nie jest zadeklarowany w pliku manifestu, system rzuci wyjątek MissingForegroundServiceTypeException po wywołaniu funkcji startForeground().

    Nawet jeśli nie jest to wymagane, zalecamy zadeklarowanie wszystkich usług na pierwszym planie i podanie ich typów.

Proś o uprawnienia usługi działającej na pierwszym planie

Poniższy kod pokazuje, jak poprosić o uprawnienia dotyczące usługi na pierwszym planie, która używa aparatu.

<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>

Najważniejsze informacje o kodzie

  • Ten kod korzysta ze sprawdzonych metod dotyczących aplikacji kierowanej na poziom API 34 lub wyższy.