การอนุญาตตำแหน่งแบบ Tristate ใน Android 10 ช่วยให้ผู้ใช้ควบคุมวิธีที่แอปเข้าถึงตำแหน่งอุปกรณ์ของตนได้มากขึ้น
ใน Android 9 และต่ำกว่า ผู้ใช้ได้เลือกตัวเลือกอย่างต่อเนื่องเมื่อให้สิทธิ์การเข้าถึงตำแหน่งแก่แอป พวกเขาสามารถ ปฏิเสธ หรือ อนุญาตได้ ซึ่งอย่างหลังทำให้แอปเข้าถึงได้ตลอดเวลา (เบื้องหน้าและเบื้องหลัง) การอนุญาตตำแหน่งแบบ Tristate ใน Android 10 ให้ผู้ใช้สามตัวเลือกในการอนุญาตให้แอปเข้าถึงตำแหน่งของอุปกรณ์ ผู้ใช้จะได้รับแจ้งให้ให้หรือปฏิเสธระดับสิทธิ์เมื่อแอปร้องขอ
โดยปกติผู้ใช้จะเห็นตัวเลือกสามตัวเลือกที่แสดงในรูปที่ 1 อย่างไรก็ตาม มีกรณีการใช้งานที่ต้องการเพียงสองตัวเลือกเหล่านี้ และในกรณีดังกล่าวจะแสดงเพียงสองตัวเลือกเท่านั้น
นี่คือสามตัวเลือก:
- อนุญาตตลอดเวลา : แอปจะทราบตำแหน่งของอุปกรณ์แม้ว่าจะไม่ได้ใช้งานแอปก็ตาม (ทำงานในพื้นหลัง) ซึ่งเทียบเท่ากับการอนุญาตใน Android 9 และต่ำกว่า
- อนุญาตเฉพาะในขณะที่มีการใช้งานแอป : (เบื้องหน้าเท่านั้น) ตำแหน่งของอุปกรณ์จะปรากฏแก่แอปเมื่อทำงานอยู่เท่านั้น
- ปฏิเสธ : แอปจะไม่สามารถมองเห็นตำแหน่งของอุปกรณ์ได้ ซึ่งเหมือนกับการปฏิเสธการอนุญาตใน Android 9 และต่ำกว่า
ผู้ใช้จะได้รับแจ้งให้ให้สิทธิ์การเข้าถึงตำแหน่งเมื่อแอปขออนุญาต
เมื่อผู้ใช้ให้ อนุญาตเฉพาะในขณะที่แอปกำลังใช้งานอยู่ แอปสามารถขอเพิ่มการเข้าถึง อนุญาตได้ตลอดเวลา ผู้ใช้เห็นกล่องโต้ตอบคำขอ (แสดงใน รูปที่ 2 ) หากผู้ใช้เลือก เก็บการเข้าถึงขณะใช้งาน เมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์ในการใช้งานครั้งถัดไป กล่องโต้ตอบจะมีตัวเลือกให้ เก็บและไม่ต้องถามอีก
กล่องโต้ตอบจะปรากฏภายใต้เงื่อนไขเหล่านี้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 10:
- หลังจากอนุญาตไปแล้วอย่างน้อย 24 ชั่วโมง
- เฉพาะในกรณีที่แอปรับตำแหน่งในเบื้องหลัง
- เมื่อหน้าจอเปิดอยู่ และผู้ใช้ไม่ได้ใช้แอปอื่น
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการขอสิทธิ์ โปรดดูที่ แอปเข้าถึงตำแหน่งอุปกรณ์ สำหรับรายละเอียดหากแอปของคุณกำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า โปรดดู การดำเนินการที่ต่อเนื่องโดยผู้ใช้
ผลกระทบ
ฟีเจอร์การอนุญาตตำแหน่งแบบ Tristate ส่งผลต่อแอปใดๆ ที่ต้องเข้าถึงตำแหน่งของอุปกรณ์ขณะทำงานในเบื้องหลัง และจำเป็นใน Android 10
คุณสามารถเปลี่ยนรหัสของคุณได้ แต่คุณ ไม่สามารถ แก้ไขหรือปรับแต่งการทำงานที่เกี่ยวข้องกับการอนุญาตในกรอบงานได้
การนำไปปฏิบัติ
การอนุญาตตำแหน่งแบบ Tristate จะนำไปใช้กับแอปใน Android 10 โดยไม่คำนึงถึง SDK เป้าหมายของแอป
สำหรับข้อมูลเกี่ยวกับการใช้งานกรณีการใช้งานแอปของคุณ (ในการอัปเกรด) โปรดดูส่วน การออกแบบสำหรับสถานการณ์การอัปเกรดอุปกรณ์ ในเอกสารสำหรับนักพัฒนา
หากต้องการดูวิธีเปิดใช้งานการเข้าถึงสำหรับกรณีการใช้งานต่างๆ (เช่น ต้องมีการเข้าถึงตำแหน่งในเบื้องหลังสำหรับแอป เช่น Google Maps หรือบริการ Google Play) ดูหัวข้อเหล่านี้ในหน้า การเข้าถึงตำแหน่งอุปกรณ์ของแอป :
การเข้าถึงตำแหน่งในแอป
ผู้ใช้สามารถเปลี่ยนสิทธิ์การเข้าถึงแอปของคุณเป็น ปฏิเสธ หรือ อนุญาตเฉพาะในขณะที่ใช้แอป ได้หากต้องการ สำหรับสิทธิ์การเข้าถึงตำแหน่งในแอป และสำหรับแอปของบุคคลที่หนึ่งและบุคคลที่สามทั้งหมด ให้ระบุระดับการควบคุมผู้ใช้ตามที่กำหนดในตารางต่อไปนี้
แอปประเภทสิทธิ์จำเป็นต้องขอ | ตัวเลือกผู้ใช้ที่จะให้ |
---|---|
แอพขอสิทธิ์เบื้องหน้าเท่านั้น | อนุญาตเฉพาะในขณะที่ใช้แอพ ปฏิเสธ |
แอปขอสิทธิ์เสมอ (เบื้องหน้าและเบื้องหลัง) | อนุญาตตลอด อนุญาตเฉพาะในขณะที่ใช้แอพ ปฏิเสธ |
แอพทั้งหมดที่มีการร้องขอการเข้าถึงตำแหน่ง | อนุญาตเฉพาะในขณะที่ใช้แอพ |
สิทธิ์เหล่านี้ใช้กับคำขอตำแหน่งทั้งหมด แอพที่ อนุญาตขณะใช้สิทธิ์ของแอพเท่านั้น ไม่อนุญาต Wi-Fi พื้นหลังหรือการสแกนเซลล์
ใน Android 11 หรือต่ำกว่า แอปที่ อนุญาตเฉพาะขณะใช้สิทธิ์ของแอป จะไม่ได้รับอนุญาตให้สแกนบลูทูธในเบื้องหลัง ตั้งแต่ Android 12 แอปที่ อนุญาตเฉพาะขณะใช้สิทธิ์ของแอป สามารถรับผลการสแกนบลูทูธได้โดยการตั้งค่าของ android:usesPermissionFlags
เป็น neverForLocation
สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ แอปไม่ได้รับตำแหน่งทางกายภาพ
การอัพเกรดระบบปฏิบัติการ
ในการอัปเกรดระบบปฏิบัติการเป็น Android 10 การอนุญาตตำแหน่งของแอปจะแปลดังต่อไปนี้:
- เปิด กลายเป็นอนุญาตเฉพาะในขณะที่ใช้งานอยู่
- ปิด ยังคงปิดอยู่ ( ปฏิเสธ )
- การเข้าถึงตำแหน่งที่อนุญาตล่วงหน้าจะกลายเป็น อนุญาตเฉพาะในขณะที่ใช้งาน ให้สิทธิ์ล่วงหน้าเท่านั้น