Mendeklarasikan layanan latar depan dan meminta izin

Dalam manifes aplikasi, deklarasikan setiap layanan latar depan aplikasi dengan elemen <service>. Untuk setiap layanan, gunakan atribut android:foregroundServiceType untuk mendeklarasikan jenis pekerjaan yang dilakukan layanan.

Selain itu, minta izin apa pun yang diperlukan oleh layanan latar depan Anda.

Kompatibilitas versi

Persyaratan untuk mendeklarasikan layanan latar depan dan meminta izin bervariasi bergantung pada API level yang ditargetkan aplikasi Anda. Halaman ini menjelaskan persyaratan untuk aplikasi yang menargetkan API level 34 atau yang lebih tinggi. Untuk mengetahui informasi tentang perubahan pada layanan latar depan di versi platform sebelumnya, lihat Perubahan pada layanan latar depan.

Mendeklarasikan layanan latar depan dalam manifes aplikasi

Kode berikut menunjukkan cara mendeklarasikan layanan latar depan pemutaran media. Anda mungkin menggunakan layanan seperti ini untuk memutar musik.

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

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

Poin penting tentang kode

  • Dalam contoh ini, layanan hanya memiliki satu jenis, media. Jika beberapa jenis berlaku untuk layanan Anda, pisahkan dengan operator |. Misalnya, jika layanan Anda menggunakan kamera dan mikrofon, deklarasikan seperti ini:

    android:foregroundServiceType="camera|microphone"
    
  • Bergantung pada level API yang ditargetkan aplikasi Anda, Anda mungkin diperlukan untuk mendeklarasikan layanan latar depan dalam manifes aplikasi. Persyaratan untuk level API tertentu dijelaskan dalam Perubahan pada layanan latar depan.

    Jika Anda mencoba membuat layanan latar depan dan jenisnya tidak dideklarasikan dalam manifes, sistem akan menampilkan MissingForegroundServiceTypeException saat memanggil startForeground().

    Meskipun tidak diwajibkan, praktik terbaiknya adalah mendeklarasikan semua layanan latar depan dan memberikan jenis layanannya.

Meminta izin layanan latar depan

Kode berikut menunjukkan cara meminta izin untuk layanan latar depan yang menggunakan kamera.

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

Poin penting tentang kode

  • Kode ini menggunakan praktik terbaik untuk aplikasi yang menargetkan API level 34 atau yang lebih tinggi.