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

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

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