การอนุญาตตำแหน่ง Tristate

การอนุญาตตำแหน่งแบบ Tristate ใน Android 10 ช่วยให้ผู้ใช้ควบคุมวิธีที่แอปเข้าถึงตำแหน่งอุปกรณ์ของตนได้มากขึ้น

ใน Android 9 และต่ำกว่า ผู้ใช้ได้เลือกตัวเลือกอย่างต่อเนื่องเมื่อให้สิทธิ์การเข้าถึงตำแหน่งแก่แอป พวกเขาสามารถ ปฏิเสธ หรือ อนุญาตได้ ซึ่งอย่างหลังทำให้แอปเข้าถึงได้ตลอดเวลา (เบื้องหน้าและเบื้องหลัง) การอนุญาตตำแหน่งแบบ Tristate ใน Android 10 ให้ผู้ใช้สามตัวเลือกในการอนุญาตให้แอปเข้าถึงตำแหน่งของอุปกรณ์ ผู้ใช้จะได้รับแจ้งให้ให้หรือปฏิเสธระดับสิทธิ์เมื่อแอปร้องขอ

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

Tristate location permissions screen
รูปที่ 1 หน้าจอการแจ้งเตือน Tristate

นี่คือสามตัวเลือก:

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

ผู้ใช้จะได้รับแจ้งให้ให้สิทธิ์การเข้าถึงตำแหน่งเมื่อแอปขออนุญาต

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

กล่องโต้ตอบจะปรากฏภายใต้เงื่อนไขเหล่านี้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 10:

  • หลังจากอนุญาตไปแล้วอย่างน้อย 24 ชั่วโมง
  • เฉพาะในกรณีที่แอปรับตำแหน่งในเบื้องหลัง
  • เมื่อหน้าจอเปิดอยู่ และผู้ใช้ไม่ได้ใช้แอปอื่น
Incremental permissions
รูปที่ 2 สิทธิ์เพิ่มเติม

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

ผลกระทบ

ฟีเจอร์การอนุญาตตำแหน่งแบบ Tristate ส่งผลต่อแอปใดๆ ที่ต้องเข้าถึงตำแหน่งของอุปกรณ์ขณะทำงานในเบื้องหลัง และจำเป็นใน Android 10

คุณสามารถเปลี่ยนรหัสของคุณได้ แต่คุณ ไม่สามารถ แก้ไขหรือปรับแต่งการทำงานที่เกี่ยวข้องกับการอนุญาตในกรอบงานได้

การนำไปปฏิบัติ

การอนุญาตตำแหน่งแบบ Tristate จะนำไปใช้กับแอปใน Android 10 โดยไม่คำนึงถึง SDK เป้าหมายของแอป

สำหรับข้อมูลเกี่ยวกับการใช้งานกรณีการใช้งานแอปของคุณ (ในการอัปเกรด) โปรดดูส่วน การออกแบบสำหรับสถานการณ์การอัปเกรดอุปกรณ์ ในเอกสารสำหรับนักพัฒนา

หากต้องการดูวิธีเปิดใช้งานการเข้าถึงสำหรับกรณีการใช้งานต่างๆ (เช่น ต้องมีการเข้าถึงตำแหน่งในเบื้องหลังสำหรับแอป เช่น Google Maps หรือบริการ Google Play) ดูหัวข้อเหล่านี้ในหน้า การเข้าถึงตำแหน่งอุปกรณ์ของแอป :

การเข้าถึงตำแหน่งในแอป

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

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

สิทธิ์เหล่านี้ใช้กับคำขอตำแหน่งทั้งหมด แอพที่ อนุญาตขณะใช้สิทธิ์ของแอพเท่านั้น ไม่อนุญาต Wi-Fi พื้นหลังหรือการสแกนเซลล์

ใน Android 11 หรือต่ำกว่า แอปที่ อนุญาตเฉพาะขณะใช้สิทธิ์ของแอป จะไม่ได้รับอนุญาตให้สแกนบลูทูธในเบื้องหลัง ตั้งแต่ Android 12 แอปที่ อนุญาตเฉพาะขณะใช้สิทธิ์ของแอป สามารถรับผลการสแกนบลูทูธได้โดยการตั้งค่าของ android:usesPermissionFlags เป็น neverForLocation สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ แอปไม่ได้รับตำแหน่งทางกายภาพ

การอัพเกรดระบบปฏิบัติการ

ในการอัปเกรดระบบปฏิบัติการเป็น Android 10 การอนุญาตตำแหน่งของแอปจะแปลดังต่อไปนี้:

  • เปิด กลายเป็นอนุญาตเฉพาะในขณะที่ใช้งานอยู่
  • ปิด ยังคงปิดอยู่ ( ปฏิเสธ )
  • การเข้าถึงตำแหน่งที่อนุญาตล่วงหน้าจะกลายเป็น อนุญาตเฉพาะในขณะที่ใช้งาน ให้สิทธิ์ล่วงหน้าเท่านั้น