Deklarowanie usług działających na pierwszym planie i proszenie o uprawnienia
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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ć, jakiego rodzaju pracę wykonuje usługa.
Dodatkowo poproś o wszystkie uprawnienia wymagane przez usługi działające 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 docelowego poziomu interfejsu API aplikacji. Na tej stronie znajdziesz 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 starszych 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 jeden typ: media
. Jeśli do Twojej usługi pasuje kilka typów, rozdziel je operatorem |
. Jeśli na przykład Twoja usługa korzysta z kamery 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 poszczególnych poziomów interfejsu API opisano w sekcji 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 jest zadeklarowany w pliku manifestu, system zgłosi błąd MissingForegroundServiceTypeException
podczas wywoływania funkcji startForeground()
.
Nawet jeśli nie jest to wymagane, zalecamy zadeklarowanie wszystkich usług na pierwszym planie i podanie ich typów.
Poproś 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 korzysta ze sprawdzonych metod w przypadku aplikacji kierowanej na poziom API 34 lub nowszy.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-08-27 UTC."],[],[],null,["In your app's manifest, declare each of your app's foreground services\nwith a [`\u003cservice\u003e`](/guide/topics/manifest/service-element)\nelement. For each service, use an\n[`android:foregroundServiceType` attribute](/develop/background-work/services/fgs/service-types)\nto declare what kind of work the service does.\n\nIn addition, request any permissions needed by your foreground services.\n| **Important:** All foreground service declarations must comply with the requirements in the [Google Play Device and Network Abuse policy](https://support.google.com/googleplay/android-developer/answer/9888379) and the Google Play [Understanding foreground service requirements\n| documentation](https://support.google.com/googleplay/android-developer/answer/13392821).\n\nVersion compatibility\n\nThe requirements for declaring your foreground services and requesting\npermissions vary depending on what API level your app targets. This page\ndescribes the requirements for apps that target API level 34 or higher. For\ninformation about changes to foreground services in earlier platform versions,\nsee [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\nDeclare foreground services in the app manifest\n\nThe following code shows how to declare a media playback foreground service.\nYou might use a service like this to play music. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n \u003capplication ...\u003e\n\n \u003cservice\n android:name=\".MyMediaPlaybackService\"\n android:foregroundServiceType=\"mediaPlayback\"\n android:exported=\"false\"\u003e\n \u003c/service\u003e\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- In this example, the service has only one type, `media`. If\n multiple types apply to your service, separate them with the `|`\n operator. For example, if your service uses the camera and microphone,\n declare it like this:\n\n android:foregroundServiceType=\"camera|microphone\"\n\n- Depending on what API level your app targets, you may be\n **required** to declare foreground services in the app\n manifest. The requirements for specific API levels are described in\n [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\n If you try to create a foreground service and its type isn't declared\n in the manifest, the system throws a\n [`MissingForegroundServiceTypeException`](/reference/android/app/MissingForegroundServiceTypeException)\n upon calling `startForeground()`.\n\n Even when it isn't required, it's a best practice to declare\n all your foreground services and provide their service types.\n\nRequest the foreground service permissions\n\nThe following code shows how to request permissions for a foreground\nservice that uses the camera. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/\u003e\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_CAMERA\"/\u003e\n\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- This code uses best practices for an app that targets API level 34 or higher."]]