สิทธิ์ที่เกี่ยวข้องกับตำแหน่ง ไมโครโฟน และกล้องจะให้สิทธิ์แอปของคุณเข้าถึงข้อมูลที่ละเอียดอ่อนเป็นพิเศษเกี่ยวกับผู้ใช้ แพลตฟอร์มนี้มีกลไกหลายอย่างที่อธิบายไว้ในหน้านี้ เพื่อช่วยให้ผู้ใช้ได้รับข้อมูลและควบคุมได้ว่าแอปใดบ้างที่สามารถเข้าถึงตำแหน่ง ไมโครโฟน และกล้อง
ฟีเจอร์ของระบบที่รักษาความเป็นส่วนตัวเหล่านี้ไม่ควรส่งผลต่อวิธีที่แอปจัดการสิทธิ์ที่เกี่ยวข้องกับตำแหน่ง ไมโครโฟน และกล้อง ตราบใดที่คุณปฏิบัติตามแนวทางปฏิบัติแนะนำด้านความเป็นส่วนตัว
โดยเฉพาะอย่างยิ่ง โปรดตรวจสอบว่าคุณได้ดำเนินการต่อไปนี้ในแอป
- รอเข้าถึงกล้องของอุปกรณ์จนกว่าผู้ใช้จะให้สิทธิ์
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 ขึ้นไป ผู้ใช้สามารถเปิดและปิดใช้การเข้าถึงกล้องและไมโครโฟนสำหรับแอปทั้งหมดในอุปกรณ์ได้โดยกดตัวเลือกเปิด/ปิดเพียงตัวเลือกเดียว ผู้ใช้สามารถเข้าถึงตัวเลือกที่เปิด/ปิดได้จากการตั้งค่าด่วนดังที่แสดงในรูปที่ 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);