Dichiarare i servizi in primo piano e richiedere le autorizzazioni
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Nel file manifest della tua app, dichiara ogni servizio in primo piano
con un elemento <service>
. Per ogni servizio, utilizza un attributo
android:foregroundServiceType
per dichiarare il tipo di lavoro svolto dal servizio.
Inoltre, richiedi le autorizzazioni necessarie per i servizi in primo piano.
Compatibilità delle versioni
I requisiti per dichiarare i servizi in primo piano e richiedere
le autorizzazioni variano a seconda del livello API a cui è destinata la tua app. Questa pagina
descrive i requisiti per le app che hanno come target il livello API 34 o versioni successive. Per
informazioni sulle modifiche ai servizi in primo piano nelle versioni precedenti della piattaforma,
vedi Modifiche ai servizi in primo piano.
Dichiarare i servizi in primo piano nel manifest dell'app
Il seguente codice mostra come dichiarare un servizio in primo piano di riproduzione multimediale.
Potresti utilizzare un servizio come questo per ascoltare musica.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
Punti chiave del codice
In questo esempio, il servizio ha un solo tipo, media
. Se
al tuo servizio si applicano più tipi, separali con l'operatore |
. Ad esempio, se il tuo servizio utilizza la fotocamera e il microfono,
dichiaralo in questo modo:
android:foregroundServiceType="camera|microphone"
A seconda del livello API target della tua app, potresti essere
obbligato a dichiarare i servizi in primo piano nel file manifest
dell'app. I requisiti per livelli API specifici sono descritti in
Modifiche ai servizi in primo piano.
Se provi a creare un servizio in primo piano e il relativo tipo non è dichiarato
nel manifest, il sistema genera un'eccezione
MissingForegroundServiceTypeException
quando viene chiamato startForeground()
.
Anche quando non è obbligatorio, è una best practice dichiarare
tutti i servizi in primo piano e fornire i relativi tipi di servizio.
Richiedi le autorizzazioni per i servizi in primo piano
Il seguente codice mostra come richiedere le autorizzazioni per un servizio in primo piano che utilizza la fotocamera.
<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>
Punti chiave del codice
- Questo codice utilizza le best practice per un'app che ha come target il livello API 34 o
superiore.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-08-27 UTC.
[null,null,["Ultimo aggiornamento 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."]]