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

นี่คือสามตัวเลือก:
- อนุญาตตลอดเวลา : แอปรู้จักตำแหน่งของอุปกรณ์แม้ว่าแอปจะไม่ได้ใช้งานอยู่ (ทำงานในพื้นหลัง) ซึ่งเทียบเท่ากับการอนุญาตใน Android 9 และต่ำกว่า
- อนุญาตขณะใช้งานแอปเท่านั้น : (เบื้องหน้าเท่านั้น) ตำแหน่งของอุปกรณ์จะปรากฏต่อแอปเมื่อทำงานอย่างแข็งขันเท่านั้น
- ปฏิเสธ : แอปจะไม่เห็นตำแหน่งของอุปกรณ์ สิ่งนี้เหมือนกับการปฏิเสธการอนุญาตใน Android 9 และต่ำกว่า
ผู้ใช้จะได้รับแจ้งให้อนุญาตการเข้าถึงตำแหน่งเมื่อแอพขออนุญาต
เมื่อผู้ใช้ให้ อนุญาตเฉพาะในขณะที่แอปอยู่ในสิทธิ์การเข้าถึงการใช้งาน แอปสามารถขอเพิ่มการเข้าถึงการ อนุญาตตลอดเวลา ผู้ใช้เห็นกล่องโต้ตอบคำขอ (แสดงใน รูปที่ 2 ) หากผู้ใช้เลือก Keep while-in-use access เมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์ในการใช้งานครั้งต่อไป กล่องโต้ตอบจะมีตัวเลือกให้ Keep และไม่ต้องถามอีก
กล่องโต้ตอบจะปรากฏภายใต้เงื่อนไขเหล่านี้สำหรับแอปที่กำหนดเป้าหมายเป็น 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 การอนุญาตตำแหน่งของแอปจะแปลตามข้อมูลต่อไปนี้:
- เปิด จะ อนุญาตเฉพาะในขณะที่ใช้ งาน
- ปิด ยังคงปิดอยู่ ( ปฏิเสธ )
- การเข้าถึงตำแหน่งที่อนุญาตล่วงหน้าจะกลายเป็น อนุญาตเฉพาะในขณะที่ใช้ การให้สิทธิ์แบบล่วงหน้า