Dichiarare i servizi in primo piano e richiedere le autorizzazioni

Nel file manifest della tua app, dichiara ciascuno dei servizi in primo piano dell'app 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 tenuto 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 versioni successive.