Khai báo dịch vụ trên nền trước và yêu cầu cấp quyền

Trong tệp kê khai của ứng dụng, hãy khai báo từng dịch vụ nền trước của ứng dụng bằng một phần tử <service>. Đối với mỗi dịch vụ, hãy sử dụng một thuộc tính android:foregroundServiceType để khai báo loại công việc mà dịch vụ đó thực hiện.

Ngoài ra, hãy yêu cầu mọi quyền cần thiết cho dịch vụ nền trước của bạn.

Khả năng tương thích của phiên bản

Yêu cầu về việc khai báo dịch vụ trên nền trước và yêu cầu cấp quyền sẽ khác nhau tuỳ thuộc vào cấp độ API mà ứng dụng của bạn nhắm đến. Trang này mô tả các yêu cầu đối với ứng dụng nhắm đến API cấp 34 trở lên. Để biết thông tin về các thay đổi đối với dịch vụ nền trước trong các phiên bản nền tảng cũ, hãy xem bài viết Thay đổi đối với dịch vụ nền trước.

Khai báo dịch vụ nền trước trong tệp kê khai ứng dụng

Đoạn mã sau đây cho biết cách khai báo một dịch vụ nền trước để phát nội dung nghe nhìn. Bạn có thể sử dụng một dịch vụ như thế này để phát nhạc.

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

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

Các điểm chính về mã

  • Trong ví dụ này, dịch vụ chỉ có một loại là media. Nếu dịch vụ của bạn có nhiều loại, hãy phân tách các loại đó bằng toán tử |. Ví dụ: nếu dịch vụ của bạn sử dụng máy ảnh và micrô, hãy khai báo như sau:

    android:foregroundServiceType="camera|microphone"
    
  • Tuỳ thuộc vào cấp độ API mà ứng dụng của bạn nhắm đến, bạn có thể bắt buộc phải khai báo các dịch vụ nền trước trong tệp kê khai ứng dụng. Yêu cầu đối với các cấp độ API cụ thể được mô tả trong phần Thay đổi đối với dịch vụ nền trước.

    Nếu bạn cố gắng tạo một dịch vụ nền trước và loại của dịch vụ đó không được khai báo trong tệp kê khai, thì hệ thống sẽ gửi ra một MissingForegroundServiceTypeException khi gọi startForeground().

    Ngay cả khi không bắt buộc, bạn vẫn nên khai báo tất cả dịch vụ nền trước và cung cấp loại dịch vụ của các dịch vụ đó.

Yêu cầu quyền sử dụng dịch vụ nền trước

Đoạn mã sau đây cho biết cách yêu cầu cấp quyền cho một dịch vụ trên nền trước sử dụng máy ảnh.

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

Các điểm chính về mã

  • Mã này sử dụng các phương pháp hay nhất cho một ứng dụng nhắm đến cấp độ API mục tiêu 34 trở lên.