ต้องระบุประเภทบริการที่ทำงานอยู่เบื้องหน้า

Android 10 ได้เปิดตัวแอตทริบิวต์ android:foregroundServiceType ภายในองค์ประกอบ <service> เพื่อช่วยให้นักพัฒนาแอปมีความตั้งใจมากขึ้นในการกำหนดบริการที่ทำงานอยู่เบื้องหน้าที่แสดงต่อผู้ใช้

หากแอปกำหนดเป้าหมายเป็น Android 14 จะต้องระบุประเภทบริการที่ทำงานอยู่เบื้องหน้าที่เหมาะสม คุณสามารถรวมหลายประเภทเข้าด้วยกันได้เช่นเดียวกับใน Android เวอร์ชันก่อนหน้า รายการนี้แสดงประเภทบริการที่ทำงานอยู่เบื้องหน้าที่คุณเลือกได้

หากกรณีการใช้งานในแอปของคุณไม่เกี่ยวข้องกับประเภทใดเลย เราขอแนะนําอย่างยิ่งให้คุณย้ายข้อมูลตรรกะไปใช้ WorkManager หรือการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้

health, remoteMessaging, shortService, specialUse และ systemExempted เป็นประเภทใหม่ใน Android 14

ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าในไฟล์ Manifest

<manifest ...>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
    <application ...>
      <service
          android:name=".MyMediaPlaybackService"
          android:foregroundServiceType="mediaPlayback"
          android:exported="false">
      </service>
    </application>
</manifest>

หากแอปที่กำหนดเป้าหมายเป็น Android 14 ไม่ได้กำหนดประเภทสำหรับบริการที่ระบุในไฟล์ Manifest ระบบจะเพิ่ม MissingForegroundServiceTypeException เมื่อเรียกใช้ startForeground() สำหรับบริการนั้น

ประกาศสิทธิ์ใหม่เพื่อใช้ประเภทบริการที่ทำงานอยู่เบื้องหน้า

หากแอปที่กำหนดเป้าหมายเป็น Android 14 ใช้บริการที่ทำงานอยู่เบื้องหน้า แอปจะต้องประกาศสิทธิ์ที่เฉพาะเจาะจงตามประเภทบริการที่ทำงานอยู่เบื้องหน้าซึ่ง Android 14 เปิดตัว สิทธิ์เหล่านี้จะปรากฏในส่วนที่มีป้ายกำกับว่า "สิทธิ์ที่คุณต้องประกาศในไฟล์ Manifest" ในส่วนกรณีการใช้งานที่ต้องการและการบังคับใช้สำหรับบริการที่ทำงานอยู่เบื้องหน้าแต่ละประเภทในหน้านี้

สิทธิ์ทั้งหมดถือเป็นสิทธิ์ทั่วไปและได้รับสิทธิ์โดยค่าเริ่มต้น ผู้ใช้เพิกถอนสิทธิ์เหล่านี้ไม่ได้

รวมประเภทบริการที่ทำงานอยู่เบื้องหน้าไว้ที่รันไทม์

แนวทางปฏิบัติแนะนำสำหรับแอปพลิเคชันที่เริ่มบริการที่ทำงานอยู่เบื้องหน้าคือให้ใช้ startForeground() เวอร์ชัน ServiceCompat (มีอยู่ใน androidx-core 1.12 ขึ้นไป) ซึ่งคุณส่งค่าจำนวนเต็มแบบ 2 ฐานของประเภทบริการที่ทำงานอยู่เบื้องหน้า คุณเลือกที่จะส่งค่าประเภทต่างๆ ได้อย่างน้อย 1 ค่า

โดยทั่วไปคุณควรประกาศเฉพาะประเภทที่จำเป็นสำหรับ Use Case ที่เฉพาะเจาะจงเท่านั้น ซึ่งจะช่วยให้คุณทำตามความคาดหวังของระบบสำหรับบริการที่ทำงานอยู่เบื้องหน้าแต่ละประเภทได้ง่ายขึ้น ในกรณีที่บริการที่ทำงานอยู่เบื้องหน้าเริ่มต้นด้วยหลายประเภท บริการดังกล่าวต้องเป็นไปตามข้อกำหนดในการบังคับใช้แพลตฟอร์มทั้งหมด

ServiceCompat.startForeground(0, notification, FOREGROUND_SERVICE_TYPE_LOCATION)

หากไม่ได้ระบุประเภทบริการที่ทำงานอยู่เบื้องหน้าในการเรียกใช้ ระบบจะใช้ค่าเริ่มต้นของประเภทนั้นซึ่งกำหนดไว้ในไฟล์ Manifest หากคุณไม่ได้ระบุประเภทบริการในไฟล์ Manifest ระบบจะแสดงMissingForegroundServiceTypeException

หากบริการที่ทำงานอยู่เบื้องหน้าต้องการสิทธิ์ใหม่หลังจากเปิดใช้งาน คุณควรเรียกใช้ startForeground() อีกครั้งและเพิ่มประเภทบริการใหม่ ตัวอย่างเช่น สมมติว่าแอปฟิตเนสเรียกใช้บริการติดตามการวิ่งที่ต้องใช้ข้อมูล location เสมอ แต่อาจจำเป็นต้องหรือไม่ต้องมีสิทธิ์ media คุณจะต้องประกาศทั้ง location และ mediaPlayback ในไฟล์ Manifest หากผู้ใช้เริ่มการวิ่งและต้องการติดตามตำแหน่งเท่านั้น แอปของคุณควรเรียกใช้ startForeground() และส่งเฉพาะประเภทบริการ location จากนั้นหากผู้ใช้ต้องการเริ่มเล่นเสียง ให้เรียกใช้ startForeground() อีกครั้งและส่ง location|mediaPlayback

การตรวจสอบรันไทม์ของระบบ

ระบบจะตรวจสอบการใช้ประเภทบริการที่ทำงานอยู่เบื้องหน้าอย่างเหมาะสม และยืนยันว่าแอปได้ขอสิทธิ์รันไทม์ที่เหมาะสมหรือใช้ API ที่จำเป็น เช่น ระบบคาดหวังว่าแอปที่ใช้บริการที่ทำงานอยู่เบื้องหน้าประเภท FOREGROUND_SERVICE_TYPE_LOCATION จะขอ ACCESS_COARSE_LOCATION หรือ ACCESS_FINE_LOCATION

ซึ่งหมายความว่าแอปต้องปฏิบัติตามลำดับการดำเนินการที่เฉพาะเจาะจงมากเมื่อขอสิทธิ์จากผู้ใช้และเริ่มบริการที่ทำงานอยู่เบื้องหน้า คุณต้องขอสิทธิ์และได้รับสิทธิ์ก่อนที่แอปจะพยายามโทรหา startForeground() แอปที่ขอสิทธิ์ที่เหมาะสมหลังจากที่เริ่มบริการที่ทำงานอยู่เบื้องหน้าแล้วต้องเปลี่ยนลำดับการดำเนินการนี้และขอสิทธิ์ก่อนเริ่มบริการที่ทำงานอยู่เบื้องหน้า

ข้อกำหนดเฉพาะของการบังคับใช้แพลตฟอร์มจะปรากฏในส่วนที่มีป้ายกำกับว่า "ข้อกำหนดรันไทม์" ในส่วนกรณีการใช้งานที่ต้องการและการบังคับใช้สำหรับบริการที่ทำงานอยู่เบื้องหน้าแต่ละประเภทในหน้านี้

กรณีการใช้งานและการบังคับใช้ที่กำหนดไว้สำหรับบริการที่ทำงานอยู่เบื้องหน้าแต่ละประเภท

หากต้องการใช้บริการที่ทำงานอยู่เบื้องหน้าประเภทหนึ่งๆ คุณต้องประกาศสิทธิ์ที่เฉพาะเจาะจงในไฟล์ Manifest, ต้องปฏิบัติตามข้อกำหนดรันไทม์ที่เฉพาะเจาะจง และแอปต้องเป็นไปตามชุด Use Case ที่ต้องการสำหรับประเภทนั้น ส่วนต่อไปนี้อธิบายสิทธิ์ที่คุณต้องประกาศ ข้อกําหนดเบื้องต้นรันไทม์ และกรณีการใช้งานที่ต้องการสําหรับแต่ละประเภท

กล้อง

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน android:foregroundServiceType
camera
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_CAMERA
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
ข้อกําหนดเบื้องต้นของรันไทม์

ขอและได้รับสิทธิ์รันไทม์ CAMERA

หมายเหตุ: สิทธิ์รันไทม์ CAMERA อยู่ภายใต้ข้อจำกัดขณะใช้งาน ด้วยเหตุนี้ คุณจึงสร้างcameraบริการที่ทำงานอยู่เบื้องหน้าไม่ได้ขณะที่แอปอยู่ในเบื้องหลัง ยกเว้นบางกรณี ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการเริ่มบริการที่ทำงานอยู่เบื้องหน้าซึ่งต้องใช้สิทธิ์ขณะใช้งาน

คำอธิบาย

การเข้าถึงกล้องจากเบื้องหลังอย่างต่อเนื่อง เช่น แอปวิดีโอแชทที่อนุญาตให้ทำงานหลายอย่างพร้อมกันได้

อุปกรณ์ที่เชื่อมต่อ

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
connectedDevice
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_CONNECTED_DEVICE
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
ข้อกําหนดเบื้องต้นของรันไทม์

เงื่อนไขต่อไปนี้อย่างน้อย 1 ข้อจะต้องเป็นจริง

คำอธิบาย

การโต้ตอบกับอุปกรณ์ภายนอกที่ต้องใช้การเชื่อมต่อบลูทูธ, NFC, IR, USB หรือเครือข่าย

ทางเลือก

หากแอปของคุณต้องโอนข้อมูลไปยังอุปกรณ์ภายนอกอย่างต่อเนื่อง ให้ลองใช้เครื่องมือจัดการอุปกรณ์ที่ใช้ร่วมกันแทน ใช้ companion device presence API เพื่อช่วยให้คุณแอปทำงานต่อไปได้ขณะที่อุปกรณ์ที่ใช้ร่วมกันอยู่ในระยะสัญญาณ

หากแอปของคุณต้องสแกนหาอุปกรณ์บลูทูธ ให้ลองใช้ Bluetooth Scan API แทน

การซิงค์ข้อมูล

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
dataSync
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_DATA_SYNC
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
ข้อกําหนดเบื้องต้นของรันไทม์
ไม่มี
คำอธิบาย

การดำเนินการโอนข้อมูล เช่น การดำเนินการต่อไปนี้

  • การอัปโหลดหรือดาวน์โหลดข้อมูล
  • การดำเนินการสำรองและกู้คืนข้อมูล
  • การดำเนินการนำเข้าหรือส่งออก
  • ดึงข้อมูล
  • การประมวลผลไฟล์ในเครื่อง
  • โอนข้อมูลระหว่างอุปกรณ์กับระบบคลาวด์ผ่านเครือข่าย
ทางเลือก

ดูข้อมูลโดยละเอียดได้ที่ทางเลือกแทนบริการที่ทำงานอยู่เบื้องหน้าสำหรับการซิงค์ข้อมูล

สุขภาพ

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
health
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_HEALTH
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_HEALTH
สิ่งที่ต้องดำเนินการก่อนสำหรับรันไทม์

เงื่อนไขต่อไปนี้อย่างน้อย 1 ข้อจะต้องเป็นจริง

หมายเหตุ: สิทธิ์รันไทม์ READ ของ BODY_SENSORS และเซ็นเซอร์จะขึ้นอยู่กับข้อจำกัดขณะใช้งาน ด้วยเหตุนี้ คุณจึงสร้างhealthบริการที่ทำงานอยู่เบื้องหน้าซึ่งใช้เซ็นเซอร์ร่างกายขณะที่แอปทำงานอยู่เบื้องหลังไม่ได้ เว้นแต่จะได้รับสิทธิ์ BODY_SENSORS_BACKGROUND (API ระดับ 33 ถึง 35) หรือ READ_HEALTH_DATA_IN_BACKGROUND (API ระดับ 36 ขึ้นไป) ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการเริ่มบริการที่ทำงานอยู่เบื้องหน้าซึ่งต้องใช้สิทธิ์ขณะใช้งาน

คำอธิบาย

กรณีการใช้งานที่ทำงานต่อเนื่องเพื่อรองรับแอปในหมวดหมู่ฟิตเนส เช่น อุปกรณ์ติดตามการออกกำลังกาย

ตำแหน่ง

Foreground service type to declare in manifest under
android:foregroundServiceType
location
Permission to declare in your manifest
FOREGROUND_SERVICE_LOCATION
Constant to pass to startForeground()
FOREGROUND_SERVICE_TYPE_LOCATION
Runtime prerequisites

The user must have enabled location services and the app must be granted at least one of the following runtime permissions:

Note: In order to check that the user has enabled location services as well as granted access to the runtime permissions, use PermissionChecker#checkSelfPermission()

Note: The location runtime permissions are subject to while-in-use restrictions. For this reason, you cannot create a location foreground service while your app is in the background, unless you've been granted the ACCESS_BACKGROUND_LOCATION runtime permission. For more information, see Restrictions on starting foreground services that need while-in-use permissions.

Description

Long-running use cases that require location access, such as navigation and location sharing.

Alternatives

If your app needs to be triggered when the user reaches specific locations, consider using the geofence API instead.

สื่อ

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
mediaPlayback
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_MEDIA_PLAYBACK
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
ข้อกําหนดเบื้องต้นของรันไทม์
ไม่มี
คำอธิบาย
เล่นเสียงหรือวิดีโออย่างต่อเนื่องจากเบื้องหลัง รองรับฟังก์ชันการบันทึกวิดีโอดิจิทัล (DVR) ใน Android TV
ทางเลือก
หากกำลังแสดงวิดีโอแบบภาพซ้อนภาพ ให้ใช้โหมดภาพซ้อนภาพ

การฉายภาพสื่อ

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
mediaProjection
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_MEDIA_PROJECTION
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
ข้อกําหนดเบื้องต้นของรันไทม์

เรียกใช้เมธอด createScreenCaptureIntent() ก่อนเริ่มบริการที่ทำงานอยู่เบื้องหน้า ซึ่งจะแสดงการแจ้งเตือนสิทธิ์ให้ผู้ใช้ทราบ ผู้ใช้ต้องให้สิทธิ์ก่อนที่คุณจึงจะสร้างบริการได้

หลังจากสร้างบริการที่ทำงานอยู่เบื้องหน้าแล้ว คุณจะเรียกใช้ MediaProjectionManager.getMediaProjection() ได้

คำอธิบาย

ฉายเนื้อหาไปยังจอแสดงผลที่ไม่ใช่อุปกรณ์หลักหรืออุปกรณ์ภายนอกโดยใช้ MediaProjection API เนื้อหานี้ไม่จำเป็นต้องเป็นเนื้อหาสื่อโดยเฉพาะ

ทางเลือก

หากต้องการสตรีมสื่อไปยังอุปกรณ์อื่น ให้ใช้ Google Cast SDK

ไมโครโฟน

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
microphone
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_MICROPHONE
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
ข้อกําหนดเบื้องต้นของรันไทม์

ขอและได้รับสิทธิ์รันไทม์ RECORD_AUDIO

หมายเหตุ: สิทธิ์รันไทม์ RECORD_AUDIO อยู่ภายใต้ข้อจำกัดขณะใช้งาน ด้วยเหตุนี้ คุณจึงสร้างmicrophoneบริการที่ทำงานอยู่เบื้องหน้าไม่ได้ขณะที่แอปอยู่ในเบื้องหลัง ยกเว้นบางกรณี ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการเริ่มบริการที่ทำงานอยู่เบื้องหน้าซึ่งต้องใช้สิทธิ์ขณะใช้งาน

คำอธิบาย

ไมโครโฟนจะบันทึกเสียงจากเบื้องหลังอย่างต่อเนื่อง เช่น โปรแกรมอัดเสียงหรือแอปการสื่อสาร

การโทร

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
phoneCall
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_PHONE_CALL
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_PHONE_CALL
ข้อกําหนดเบื้องต้นของรันไทม์

เงื่อนไขต่อไปนี้อย่างน้อย 1 ข้อจะต้องเป็นจริง

  • แอปได้ประกาศสิทธิ์ MANAGE_OWN_CALLS ในไฟล์ Manifest
  • แอปเป็นแอปโทรศัพท์เริ่มต้นผ่านบทบาท ROLE_DIALER
คำอธิบาย

ดำเนินการต่อกับการโทรที่กำลังดำเนินอยู่โดยใช้ API ของ ConnectionService

ทางเลือก

หากต้องการโทรทางโทรศัพท์ วิดีโอ หรือ VoIP ให้ลองใช้คลัง android.telecom

ลองใช้ CallScreeningService เพื่อสกรีนสายเรียกเข้า

การรับส่งข้อความระยะไกล

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
remoteMessaging
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_REMOTE_MESSAGING
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
ข้อกําหนดเบื้องต้นของรันไทม์
ไม่มี
คำอธิบาย
โอน SMS จากอุปกรณ์เครื่องหนึ่งไปยังอีกเครื่อง ช่วยเหลืองานการรับส่งข้อความของผู้ใช้ให้มีความต่อเนื่องเมื่อเปลี่ยนอุปกรณ์

บริการสั้นๆ

Foreground service type to declare in manifest under
android:foregroundServiceType
shortService
Permission to declare in your manifest
None
Constant to pass to startForeground()
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
Runtime prerequisites
None
Description

Quickly finish critical work that cannot be interrupted or postponed.

This type has some unique characteristics:

  • Can only run for a short period of time (about 3 minutes).
  • No support for sticky foreground services.
  • Cannot start other foreground services.
  • Doesn't require a type-specific permission, though it still requires the FOREGROUND_SERVICE permission.
  • A shortService can only change to another service type if the app is currently eligible to start a new foreground service.
  • A foreground service can change its type to shortService at any time, at which point the timeout period begins.

The timeout for shortService begins from the moment that Service.startForeground() is called. The app is expected to call Service.stopSelf() or Service.stopForeground() before the timeout occurs. Otherwise, the new Service.onTimeout() is called, giving apps a brief opportunity to call stopSelf() or stopForeground() to stop their service.

A short time after Service.onTimeout() is called, the app enters a cached state and is no longer considered to be in the foreground, unless the user is actively interacting with the app. A short time after the app is cached and the service has not stopped, the app receives an ANR. The ANR message mentions FOREGROUND_SERVICE_TYPE_SHORT_SERVICE. For these reasons, it's considered best practice to implement the Service.onTimeout() callback.

The Service.onTimeout() callback doesn't exist on Android 13 and lower. If the same service runs on such devices, it doesn't receive a timeout, nor does it ANR. Make sure that your service stops as soon as it finishes the processing task, even if it hasn't received the Service.onTimeout() callback yet.

It's important to note that if the timeout of the shortService is not respected, the app will ANR even if it has other valid foreground services or other app lifecycle processes running.

If an app is visible to the user or satisfies one of the exemptions that allow foreground services to be started from the background, calling Service.StartForeground() again with the FOREGROUND_SERVICE_TYPE_SHORT_SERVICE parameter extends the timeout by another 3 minutes. If the app isn't visible to the user and doesn't satisfy one of the exemptions, any attempt to start another foreground service, regardless of type, causes a ForegroundServiceStartNotAllowedException.

If a user disables battery optimization for your app, it's still affected by the timeout of shortService FGS.

If you start a foreground service that includes the shortService type and another foreground service type, the system ignores the shortService type declaration. However, the service must still adhere to the prerequisites of the other declared types. For more information, see the Foreground services documentation.

การใช้งานพิเศษ

Foreground service type to declare in manifest under
android:foregroundServiceType
specialUse
Permission to declare in your manifest
FOREGROUND_SERVICE_SPECIAL_USE
Constant to pass to startForeground()
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
Runtime prerequisites
None
Description

Covers any valid foreground service use cases that aren't covered by the other foreground service types.

In addition to declaring the FOREGROUND_SERVICE_TYPE_SPECIAL_USE foreground service type, developers should declare use cases in the manifest. To do so, they specify the <property> element within the <service> element. These values and corresponding use cases are reviewed when you submit your app in the Google Play Console. The use cases you provide are free-form, and you should make sure to provide enough information to let the reviewer see why you need to use the specialUse type.

<service android:name="fooService" android:foregroundServiceType="specialUse">
  <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
      android:value="explanation_for_special_use"/>
</service>

ได้รับการยกเว้นจากระบบ

ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่จะประกาศในไฟล์ Manifest ในส่วน
android:foregroundServiceType
systemExempted
สิทธิ์ในการประกาศในไฟล์ Manifest
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
ค่าคงที่ที่จะส่งไปยัง startForeground()
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
ข้อกําหนดเบื้องต้นของรันไทม์
ไม่มี
คำอธิบาย

สงวนไว้สำหรับแอปพลิเคชันของระบบและการผสานรวมระบบที่เฉพาะเจาะจง เพื่อใช้บริการที่ทำงานอยู่เบื้องหน้าต่อไป

หากต้องการใช้ประเภทนี้ แอปต้องเป็นไปตามเกณฑ์ข้อใดข้อหนึ่งต่อไปนี้เป็นอย่างน้อย

  • อุปกรณ์อยู่ในสถานะโหมดสาธิต
  • แอปเป็นเจ้าของอุปกรณ์
  • แอปเป็นเจ้าของเครื่องมือวิเคราะห์
  • แอปความปลอดภัยที่มีบทบาท ROLE_EMERGENCY
  • แอปผู้ดูแลระบบอุปกรณ์
  • แอปที่มีสิทธิ์ SCHEDULE_EXACT_ALARM หรือ USE_EXACT_ALARM และใช้บริการที่ทำงานอยู่เบื้องหน้าเพื่อส่งเสียงปลุกในเบื้องหลังต่อไป รวมถึงการปลุกด้วยระบบสัมผัสเท่านั้น
  • แอป VPN (กำหนดค่าโดยใช้การตั้งค่า > เครือข่ายและอินเทอร์เน็ต > VPN)

    มิเช่นนั้น การประกาศประเภทนี้จะทำให้ระบบแสดงข้อผิดพลาด ForegroundServiceTypeNotAllowedException

การบังคับใช้นโยบาย Google Play สำหรับการใช้ประเภทบริการที่ทำงานอยู่เบื้องหน้า

หากแอปกำหนดเป้าหมายเป็น Android 14 ขึ้นไป คุณจะต้องประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าของแอปในหน้าเนื้อหาแอปของ Play Console (นโยบาย > เนื้อหาแอป) ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าใน Play Console ได้ที่การทำความเข้าใจบริการที่ทำงานอยู่เบื้องหน้าและข้อกำหนดของ Intent แบบเต็มหน้าจอ