สิทธิ์ที่เกี่ยวข้องกับตำแหน่ง ไมโครโฟน และกล้องจะให้สิทธิ์แก่แอป เข้าถึงข้อมูลที่ละเอียดอ่อนเป็นพิเศษเกี่ยวกับผู้ใช้ แพลตฟอร์มนี้ประกอบด้วย กลไกต่างๆ ดังที่อธิบายในหน้านี้ เพื่อช่วยให้ผู้ใช้รับทราบข้อมูลอยู่เสมอ ควบคุมว่าแอปใดบ้างสามารถเข้าถึงตำแหน่ง ไมโครโฟน และกล้อง
ฟีเจอร์ของระบบที่รักษาความเป็นส่วนตัวเหล่านี้ไม่ควรส่งผลต่อวิธีที่แอปจัดการสิทธิ์ที่เกี่ยวข้องกับตำแหน่ง ไมโครโฟน และกล้อง ตราบใดที่คุณปฏิบัติตามแนวทางปฏิบัติแนะนำด้านความเป็นส่วนตัว
โดยเฉพาะอย่างยิ่ง โปรดตรวจสอบว่าคุณทำสิ่งต่อไปนี้ในแอป
- รอให้ผู้ใช้เข้าถึงกล้องของอุปกรณ์จนกว่าผู้ใช้จะให้สิทธิ์
CAMERA
สิทธิ์ในแอปของคุณ - รอเข้าถึงไมโครโฟนของอุปกรณ์จนกว่าผู้ใช้จะให้สิทธิ์
RECORD_AUDIO
แก่แอป - รอจนกว่าผู้ใช้โต้ตอบกับฟีเจอร์ในแอปที่ต้องใช้
ก่อนที่จะขอ
ACCESS_COARSE_LOCATION
หรือสิทธิ์ACCESS_FINE_LOCATION
สิทธิ์ ตามที่อธิบายไว้ในคำแนะนำเกี่ยวกับวิธีขอตำแหน่ง สิทธิ์ - รอจนกว่าผู้ใช้จะให้สิทธิ์
ACCESS_COARSE_LOCATION
หรือสิทธิ์ACCESS_FINE_LOCATION
แก่แอปของคุณก่อนจึงจะขอสิทธิ์ACCESS_BACKGROUND_LOCATION
ได้
แดชบอร์ดความเป็นส่วนตัว
ในอุปกรณ์ที่รองรับซึ่งใช้ Android 12 ขึ้นไป หน้าจอแดชบอร์ดความเป็นส่วนตัวจะปรากฏในการตั้งค่าระบบ ในหน้าจอนี้ ผู้ใช้จะเข้าถึงได้ หน้าจอแยกต่างหากที่จะแสดงเมื่อแอปเข้าถึงตำแหน่ง กล้อง และไมโครโฟน แต่ละหน้าจอจะแสดงไทม์ไลน์ของเวลาที่แอปต่างๆ ได้เข้าถึง ข้อมูลบางประเภท รูปที่ 1 แสดงไทม์ไลน์การเข้าถึงข้อมูลสำหรับตำแหน่ง
แสดงเหตุผลในการเข้าถึงข้อมูล
แอปของคุณสามารถให้เหตุผลแก่ผู้ใช้เพื่อช่วยให้เข้าใจว่าทำไมแอปของคุณ เข้าถึงข้อมูลตำแหน่ง กล้อง หรือไมโครโฟน เหตุผลนี้อาจปรากฏในหน้าจอแดชบอร์ดความเป็นส่วนตัวใหม่ หน้าจอสิทธิ์ของแอป หรือทั้ง 2 หน้าจอ
หากต้องการอธิบายเหตุผลที่แอปเข้าถึงข้อมูลตำแหน่ง กล้อง และไมโครโฟน ให้ทำดังนี้ ทำตามขั้นตอนต่อไปนี้
เพิ่มกิจกรรมซึ่งเมื่อเริ่มต้นแล้ว อาจให้เหตุผลว่าทำไมแอปของคุณ ดำเนินการเข้าถึงข้อมูลบางอย่าง ภายในกิจกรรมนี้ ให้ตั้งค่า แอตทริบิวต์ของ
android:permission
เป็นSTART_VIEW_PERMISSION_USAGE
หากแอปกำหนดเป้าหมายเป็น Android 12 ขึ้นไป คุณต้องแสดงอย่างชัดเจน ระบุค่าสำหรับ
android:exported
เพิ่มตัวกรอง Intent ต่อไปนี้ในกิจกรรมที่เพิ่มใหม่
<!-- android:exported required if you target Android 12. --> <activity android:name=".DataAccessRationaleActivity" android:permission="android.permission.START_VIEW_PERMISSION_USAGE" android:exported="true"> <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on your app permission's page in system settings. VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information icon on the Privacy Dashboard screen. --> <intent-filter> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" /> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" /> <category android:name="android.intent.category.DEFAULT" /> ... </intent-filter> </activity>
เลือกว่ากิจกรรมเหตุผลในการเข้าถึงข้อมูลควรแสดงข้อมูลใด ตัวอย่างเช่น คุณสามารถ อาจแสดงเว็บไซต์ของแอปหรือบทความในศูนย์ช่วยเหลือ หากต้องการให้ข้อมูลเพิ่มเติม คำอธิบายโดยละเอียดเกี่ยวกับประเภทข้อมูลที่แอปของคุณเข้าถึง รวมถึง จัดการบริการเสริมที่ระบบรวมไว้เมื่อเข้าถึง เรียกใช้ Intent ในการใช้สิทธิ์:
- หากระบบเรียกใช้
ACTION_VIEW_PERMISSION_USAGE
แอปจะทำสิ่งต่อไปนี้ได้ ดึงค่าสำหรับEXTRA_PERMISSION_GROUP_NAME
- หากระบบเรียกใช้
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
แอปของคุณ สามารถดึงค่าสำหรับEXTRA_PERMISSION_GROUP_NAME
EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
, และEXTRA_END_TIME
- หากระบบเรียกใช้
ผู้ใช้จะเห็นไอคอนข้อมูล โดยขึ้นอยู่กับตัวกรอง Intent ที่คุณเพิ่ม ข้างชื่อแอปในบางหน้าจอ
- หากคุณเพิ่มตัวกรอง Intent ที่มี
VIEW_PERMISSION_USAGE
การดำเนินการ ผู้ใช้จะเห็นไอคอนในหน้าสิทธิ์ของแอปในการตั้งค่าระบบ คุณ สามารถนำการดำเนินการนี้ไปใช้กับสิทธิ์รันไทม์ทั้งหมด - หากคุณเพิ่มตัวกรอง Intent ที่มีการดำเนินการ
VIEW_PERMISSION_USAGE_FOR_PERIOD
ผู้ใช้จะเห็นไอคอนข้างชื่อแอปทุกครั้งที่แอปปรากฏในหน้าจอแดชบอร์ดความเป็นส่วนตัว
เมื่อผู้ใช้เลือกไอคอนดังกล่าว ระบบจะเริ่มกิจกรรมเหตุผลของแอป
สัญลักษณ์บอกสถานะ
ในอุปกรณ์ที่ใช้ Android 12 ขึ้นไป เมื่อแอปเข้าถึงไมโครโฟนหรือกล้อง ไอคอนจะปรากฏในแถบสถานะ หากแอปอยู่ในโหมดสมจริง ไอคอนจะปรากฏที่มุมขวาบนของหน้าจอ ผู้ใช้สามารถเปิดการตั้งค่าด่วนและเลือกไอคอนเพื่อดูว่าแอปใดกำลังใช้ไมโครโฟนหรือกล้องอยู่ รูปที่ 2 แสดงตัวอย่างภาพหน้าจอที่มีไอคอนต่างๆ
ระบุตำแหน่งหน้าจอของสัญญาณบอกสถานะ
หากแอปรองรับโหมดสมจริงหรือ UI แบบเต็มหน้าจอ สัญญาณบอกสถานะอาจ
ทับซ้อน UI ของแอปอยู่ชั่วขณะ เพื่อช่วยปรับ UI ให้สอดคล้องกับสัญญาณบอกสถานะเหล่านี้
ระบบจะแนะนำ
getPrivacyIndicatorBounds()
ซึ่งข้อมูลโค้ดต่อไปนี้จะแสดงขึ้นมา เมื่อใช้ API คุณสามารถทำสิ่งต่อไปนี้ได้
เพื่อกำหนดขอบเขตที่ตัวบ่งชี้อาจปรากฏขึ้น จากนั้นคุณอาจตัดสินใจ
จัดระเบียบ UI ของหน้าจอให้แตกต่างกัน
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
สลับ
ในอุปกรณ์ที่รองรับซึ่งเรียกใช้ Android 12 ขึ้นไป ผู้ใช้สามารถเปิดและปิดใช้กล้อง และ การเข้าถึงไมโครโฟนสำหรับทุกแอปในอุปกรณ์ด้วยการกดปุ่มสลับ 1 ปุ่ม ตัวเลือก ผู้ใช้เข้าถึงตัวเลือกที่เปิด/ปิดได้จากการตั้งค่าด่วน ดังที่แสดงในรูปที่ 3 หรือจากหน้าจอความเป็นส่วนตัวในการตั้งค่าระบบ
การเปิด/ปิดกล้องและไมโครโฟนจะส่งผลต่อทุกแอปในอุปกรณ์ดังนี้
- เมื่อผู้ใช้ปิดการเข้าถึงกล้อง แอปของคุณจะได้รับฟีดกล้องที่ว่างเปล่า
เมื่อผู้ใช้ปิดการเข้าถึงไมโครโฟน แอปจะได้รับเสียงเงียบ นอกจากนี้ เซ็นเซอร์ตรวจจับการเคลื่อนไหว ถูกจำกัดอัตรา ไม่ว่าคุณจะประกาศฟิลด์
HIGH_SAMPLING_RATE_SENSORS
สิทธิ์
เมื่อผู้ใช้ปิดการเข้าถึงกล้องหรือไมโครโฟน แล้วเปิดแอปที่จำเป็นต้องเข้าถึงข้อมูลกล้องหรือไมโครโฟน ระบบจะเตือนผู้ใช้ว่ามีการปิดสวิตช์ทั้งอุปกรณ์
ตรวจสอบการรองรับอุปกรณ์
หากต้องการตรวจสอบว่าอุปกรณ์รองรับการปิด/เปิดไมโครโฟนและกล้องหรือไม่ ให้เพิ่มตรรกะที่ปรากฏในข้อมูลโค้ดต่อไปนี้
Kotlin
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
Java
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);