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

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

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

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

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

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

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

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

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

กล่องโต้ตอบจะปรากฏภายใต้เงื่อนไขเหล่านี้สำหรับแอปที่กำหนดเป้าหมายเป็น 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 การอนุญาตตำแหน่งของแอปจะแปลตามข้อมูลต่อไปนี้:

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