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 zadeklarować, jaki rodzaj pracy wykonuje usługa.

Oprócz tego poproś o wszystkie uprawnienia wymagane przez usługi na pierwszym planie.

Zgodność wersji

Wymagania dotyczące deklarowania usług działających na pierwszym planie i prośby o uprawnienia różnią się w zależności od poziomu interfejsu API, na który kierowana jest aplikacja. Na tej stronie opisujemy 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 we 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ę na pierwszym planie do odtwarzania multimediów. 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 1 typ: media. Jeśli do Twojej usługi pasuje kilka typów, rozdziel je operatorem |. Jeśli na przykład usługa używa aparatu i mikrofonu, zadeklaruj to w ten sposób:

    android:foregroundServiceType="camera|microphone"
    
  • W zależności od docelowego poziomu interfejsu API aplikacji może być wymagane zadeklarowanie usług działających na pierwszym planie w pliku manifestu aplikacji. Wymagania dotyczące konkretnych poziomów interfejsu API są opisane w artykule Zmiany w usługach działających na pierwszym planie.

    Jeśli spróbujesz utworzyć usługę działającą na pierwszym planie, a jej typ nie został zadeklarowany w pliku manifestu, system wygeneruje błąd MissingForegroundServiceTypeException po wywołaniu startForeground().

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

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

Poniższy kod pokazuje, jak poprosić o uprawnienia do usługi na pierwszym planie, która korzysta z 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 wykorzystuje sprawdzone metody dotyczące aplikacji kierowanych na interfejs API na poziomie 34 lub wyższym.