Android มอบความโปร่งใสให้แก่ผู้ใช้ด้วยการแสดงสัญญาณบอกสถานะความเป็นส่วนตัวสำหรับการเข้าถึงประเภทต่อไปนี้
การเข้าถึงกล้องและไมโครโฟน สัญญาณบอกสถานะจะปรากฏขึ้นเมื่อแอปใช้แหล่งข้อมูลส่วนตัวผ่านสิทธิ์การทำงานของแอปสำหรับกล้องและไมโครโฟน ดูข้อกำหนด CDD ที่เกี่ยวข้องได้ที่ 2.2.5. โมเดลความปลอดภัย
การเข้าถึงตำแหน่ง สัญญาณบอกสถานะจะปรากฏขึ้นเมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์ ดูข้อกำหนด CDD ที่เกี่ยวข้องได้ที่ 9.8.8. ตำแหน่ง
ผู้ใช้แตะสัญญาณบอกสถานะเพื่อดูว่าแอปใดเข้าถึงข้อมูลของตน
การใช้งานที่ใช้งานอยู่และล่าสุด
UI ของ Android จะแยกความแตกต่างระหว่างการใช้งานที่ ทำงานอยู่ กับการใช้งาน ล่าสุด ดังนี้
ใน Android 17 ขึ้นไป ระบบจะถือว่าการใช้งานตำแหน่งทำงานอยู่หากระบบทำเครื่องหมายว่าทำงานอยู่ หรือมีอายุไม่เกิน 10 วินาที สำหรับจุดตำแหน่ง ระบบจะถือว่าการเข้าถึงทำงานอยู่หาก แอปที่ไม่ใช่ระบบทำงานอยู่ในสถานะเบื้องหน้า
ใน Android 12 ขึ้นไป ระบบจะถือว่าการใช้งานไมโครโฟนและกล้องทำงานอยู่หากระบบทำเครื่องหมายว่าทำงานอยู่ หรือมีอายุไม่เกิน 5 วินาที
ไอคอนในแถบสถานะจะแสดงทุกครั้งที่แอปมีการเข้าถึงไมโครโฟน กล้อง หรือตำแหน่งที่อาจส่งผลต่อความเป็นส่วนตัวของผู้ใช้ ผู้ใช้สามารถแตะไอคอนเหล่านี้และดูว่าแอปใดกำลังเข้าถึงไมโครโฟน กล้อง ตำแหน่ง หรือรายการเหล่านี้รวมกัน ตัวอย่างสัญญาณบอกสถานะที่กำลังใช้งาน
รูปที่ 1 สัญญาณบอกสถานะที่กำลังใช้งานซึ่งแสดงการเข้าถึงที่ทำงานอยู่ (มุมขวาบน)
ระบบจะถือว่าการเข้าถึงทำงานอยู่ตราบใดที่สัญญาณบอกสถานะยังคงแสดงอยู่ ไอคอนจะแสดงขึ้นก่อน จากนั้นจะเปลี่ยนเป็นจุดที่ยังคงอยู่จนกว่าจะปิดหรือปิดแอป เมื่อผู้ใช้เปิดการตั้งค่าด่วนแล้วแตะสัญญาณบอกสถานะ กล่องโต้ตอบจะปรากฏขึ้นเพื่อแสดงว่าแอปกำลังใช้ไมโครโฟน กล้อง ตำแหน่ง หรือรายการเหล่านี้รวมกัน
รูปที่ 2 แสดงสัญญาณบอกสถานะการเข้าถึงที่ทำงานอยู่เมื่อแอปที่ทำงานอยู่เข้าถึงข้อมูลภายในกรอบเวลาที่ทำงานอยู่
รูปที่ 2 สัญญาณบอกสถานะการเข้าถึงที่ทำงานอยู่และล่าสุด
สัญญาณบอกสถานะการเข้าถึงล่าสุดจะแสดงว่าแอปเข้าถึงข้อมูลในช่วง 15 วินาทีก่อนหน้า (หรือ 20 วินาทีสำหรับข้อมูลตำแหน่ง) แต่แอปไม่ได้ทำงานอยู่ แอปที่ทำงานอยู่ทั้งหมดจะแสดงในกล่องโต้ตอบ แต่จะมีเพียงแอปเดียวที่แสดงเป็นแหล่งที่มาของการเข้าถึงล่าสุด แม้ว่าจะมีแอปมากกว่า 1 แอปเข้าถึงข้อมูลภายในกรอบเวลา 15 หรือ 20 วินาทีก่อนหน้า แอปทั้งหมดที่เข้าถึงข้อมูลตำแหน่งภายในกรอบเวลาที่ทำงานอยู่หรือล่าสุดจะแสดงในกล่องโต้ตอบ มุมมองการเข้าถึงจะยังคงอยู่จนกว่าผู้ใช้จะปิดกล่องโต้ตอบการแจ้งเตือน
ส่งและเปิดใช้
คลาส PermissionManager มีเมธอดสำหรับป้อนข้อมูลในกล่องโต้ตอบ (ซึ่งอยู่ใน UI ของระบบ) UI ของระบบจะตอบสนองต่อสวิตช์การกำหนดค่าอุปกรณ์ privacy/mic_camera_indicators_enabled ซึ่งจำเป็นเนื่องจากมีกลไกการส่ง 2 แบบแยกกัน ได้แก่ (1) ส่ง แล้ว (2) เปิดใช้
ขั้นตอนการทำงาน
ฟังก์ชันการทำงานของสัญญาณบอกสถานะสิทธิ์มี 3 ส่วนหลักๆ ดังนี้
- แอป
- สัญญาณบอกสถานะ (จัดการโดย UI ของระบบ)
- วิธีระบุว่าแอปใดกำลังใช้ข้อมูล
PermissionController มีกลไกในการระบุว่าแอปใดกำลังใช้ข้อมูล UI ของระบบจะคอยตรวจสอบแอปที่ใช้ข้อมูลส่วนตัว UI ของระบบจะแสดงไอคอนในแถบนำทางด้านบนซึ่งสอดคล้องกับสิทธิ์ที่ใช้ PermissionController จะแสดงข้อมูลเกี่ยวกับการใช้งานเมื่อผู้ใช้คลิกไอคอน
รูปที่ 3 ขั้นตอนการทำงานของคอมโพเนนต์ระบบและการเปลี่ยน (UI)
1 แอปขอข้อมูลส่วนตัวจากระบบ
2 ระบบตรวจสอบสิทธิ์ หากได้รับอนุญาต ระบบจะแจ้งผู้ให้บริการข้อมูลและบันทึกการใช้งานในสิทธิ์การทำงานของแอป
3 ผู้ให้บริการข้อมูลให้ข้อมูลแก่แอป
4-5 ผู้ใช้คลิกไอคอน UI ของระบบขอข้อมูลจาก
PermissionManagerและแสดงกล่องโต้ตอบแก่ผู้ใช้
รายละเอียดขั้นตอน
สิทธิ์การทำงานของแอปจะบันทึกการเข้าถึง API ที่ได้รับการปกป้องด้วยสิทธิ์รันไทม์ โดยจะติดตามสถานะกิจกรรมและจำนวนการเรียก API แต่ละรายการ รวมถึงโต้ตอบกับกล้อง ไมโครโฟน และสัญญาณบอกสถานะเพื่อแสดงให้ผู้ใช้เห็นเมื่อแอปเข้าถึงข้อมูลเสียงและกล้องในอุปกรณ์
แอปใช้ไมโครโฟน กล้อง หรือตำแหน่งโดยการเรียก
AppOpsManager.startOp,stopOpหรือnoteOpซึ่งจะสร้างบันทึกสิทธิ์การทำงานของแอปในเซิร์ฟเวอร์ระบบ ใน Android 17 ขึ้นไป สัญญาณบอกสถานะตำแหน่งจะใช้บันทึกสิทธิ์การทำงานของแอปเหล่านี้ด้วยUI ของระบบจะคอยตรวจสอบสิทธิ์การทำงานของแอปใหม่โดยใช้ Listener
AppOpsManager.OnOpActiveChangedInternalListenerและOnOpNotedListenerเมื่อมีการใช้งานใหม่เข้ามา (ผ่านการเรียกstartOpหรือnoteOp) UI ของระบบจะยืนยันว่าการใช้งานนั้นมาจากแอปของระบบ โดยทำดังนี้หาก UI ของระบบยืนยันการใช้งานแอปของระบบ และหากการใช้งานนั้นเป็นของไมโครโฟน UI ของระบบจะตรวจสอบว่าไมโครโฟนปิดเสียงอยู่หรือไม่
หาก UI ของระบบยืนยันการใช้งานแอปที่ไม่ใช่ระบบ (และสำหรับไมโครโฟน การใช้งานนั้นต้องมาจากไมโครโฟนที่ไม่ได้ปิดเสียง และสำหรับการใช้งานกล้อง การใช้งานนั้นต้องมาจากกล้องที่เปิดอยู่) ระบบจะแสดงไอคอนที่สื่อถึงการใช้งานดังกล่าว
หาก UI ของระบบยืนยันการใช้งานแอปที่ไม่ใช่ระบบ ระบบจะแสดงไอคอนที่สื่อถึงการใช้งานดังกล่าว โดยมีเงื่อนไขว่าปุ่มเปิด/ปิดที่เกี่ยวข้องทำงานอยู่ ดังนี้
- สำหรับไมโครโฟน: ไมโครโฟนไม่ได้ปิดเสียง
- สำหรับกล้อง: กล้องเปิดอยู่
- สำหรับตำแหน่ง: แอปทำงานอยู่ในสถานะเบื้องหน้า
หาก UI ของระบบได้รับ noteOp ซึ่งไม่มีระยะเวลา ระบบจะแสดงไอคอนเป็นเวลาอย่างน้อย 5 วินาที (10 วินาทีสำหรับตำแหน่ง) ไม่เช่นนั้น ไอคอนจะแสดงจนกว่าจะได้รับ stopOp หรือแสดงเป็นระยะเวลาขั้นต่ำ 5 หรือ 10 วินาที แล้วแต่ระยะเวลาใดจะนานกว่า การที่ผู้ใช้คลิกไอคอนจะเป็นการเริ่ม Intent ที่ไปยัง PermissionController เพื่อเริ่มกล่องโต้ตอบ
PermissionController จะโหลดการใช้งานล่าสุดทั้งหมดสำหรับไมโครโฟน กล้อง และตำแหน่ง โดยจะตรวจสอบว่ารายการใดทำงานอยู่หรือทำงานอยู่ภายในกรอบเวลาที่ UI ของระบบกำหนด (15 วินาทีสำหรับไมโครโฟนหรือกล้อง และ 20 วินาทีสำหรับตำแหน่ง) หากพบรายการที่ตรงกัน ระบบจะแสดงชื่อแอปและสิทธิ์ที่ใช้
ระบบโทรศัพท์ต้องใช้การใช้งานสิทธิ์ (เพื่อพิจารณาสแต็กไมโครโฟนแยกต่างหากที่ใช้ในการโทร) ขณะทำงานร่วมกับแอป Google Search (AGSA) และ GMS ของ Android