สิทธิ์เข้าถึงตำแหน่งแบบ Tristate

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

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

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

หน้าจอสิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะ

รูปที่ 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 สิทธิ์เข้าถึงตำแหน่งของแอปจะเปลี่ยนตามข้อมูลต่อไปนี้

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