เครื่องมือเลือกรายชื่อติดต่อของ Android มีอินเทอร์เฟซมาตรฐานที่ช่วยรักษาความเป็นส่วนตัว ซึ่งช่วยให้ผู้ใช้แชร์รายชื่อติดต่อที่ต้องการกับแอปได้
ฟีเจอร์นี้เปิดตัวใน Android 17 และเป็นทางเลือกแทนสิทธิ์ READ_CONTACTS ที่กว้างขวางโดยไม่ต้องขอสิทธิ์
เมื่อใช้เครื่องมือเลือกรายชื่อติดต่อ แอปจะขอสิทธิ์เข้าถึงข้อมูลรายชื่อติดต่อที่เฉพาะเจาะจงได้ เช่น หมายเลขโทรศัพท์หรืออีเมล ผู้ใช้จะเลือกรายชื่อติดต่อที่ต้องการแชร์ และระบบจะให้สิทธิ์อ่านชั่วคราวแก่แอปเพื่อเข้าถึงรายละเอียดเหล่านั้นเท่านั้น
สถาปัตยกรรม
เครื่องมือเลือกรายชื่อติดต่อมีองค์ประกอบหลัก 2 ส่วน ได้แก่
- แอป UI ของเครื่องมือเลือก: องค์ประกอบนี้ทำหน้าที่เป็นอินเทอร์เฟซที่ผู้ใช้มองเห็นเพื่อเลือกรายชื่อติดต่อ
- ผู้ให้บริการเซสชัน: องค์ประกอบนี้ทำหน้าที่เป็นบริการแบ็กเอนด์ที่จัดการเซสชันการเข้าถึงชั่วคราว

รูปที่ 1 แผนภาพลำดับ
UI ของเครื่องมือเลือก
UI ของเครื่องมือเลือกจะจัดการอินเทอร์เฟซผู้ใช้สำหรับการเลือกรายชื่อติดต่อและค้นหาผู้ให้บริการรายชื่อติดต่อโดยตรงเพื่อแสดงข้อมูลตามประเภทข้อมูลที่ขอ มุมมองที่รองรับ ได้แก่
- หมายเลขโทรศัพท์เท่านั้น: UI จะแสดงรายชื่อติดต่อที่มีหมายเลขโทรศัพท์
- อีเมลเท่านั้น: UI จะแสดงรายชื่อติดต่อที่มีอีเมล
- ข้อมูลติดต่อที่กำหนดเอง: UI จะแสดงรายชื่อติดต่อที่ตรงกับช่องข้อมูลที่ขอเฉพาะเจาะจง
นอกจากนี้ UI ยังรองรับฟีเจอร์ต่อไปนี้
- รายการที่จัดเรียงตามตัวอักษร: ระบบจะจัดเรียงรายชื่อติดต่อตามตัวอักษรพร้อมกับการลบข้อมูลที่ซ้ำกัน
- รูปโปรไฟล์ของรายชื่อติดต่อ: UI จะแสดงรูปภาพหรือรูปโปรไฟล์ของรายชื่อติดต่อ
- รายการโปรด: หมวดหมู่รายการโปรดจะแสดงที่ด้านบนของรายการรายชื่อติดต่อ
- ตัวสลับโปรไฟล์: ฟีเจอร์นี้ช่วยให้ผู้ใช้เลือกรายชื่อติดต่อจากโปรไฟล์ผู้ใช้ต่างๆ ได้ (เช่น โปรไฟล์งานกับโปรไฟล์ส่วนตัว)
- การเลือกแบบเดี่ยวและหลายรายการ: ระบบรองรับโหมดการเลือกทั้งแบบเดี่ยวและหลายรายการ (ขีดจำกัดเริ่มต้นคือ 50 รายการและสูงสุดคือ 100 รายการ)
- การแสดงตัวอย่างการเลือก: ผู้ใช้สามารถแสดงตัวอย่างและจัดการรายชื่อติดต่อที่เลือกก่อนยืนยัน
- การเลื่อนอย่างรวดเร็ว: ฟีเจอร์นี้ช่วยให้ไปยังส่วนต่างๆ ในรายการรายชื่อติดต่อได้อย่างรวดเร็ว
- ค้นหา: มีแถบค้นหาให้เพื่อค้นหารายชื่อติดต่อที่เฉพาะเจาะจง
- แบนเนอร์ความเป็นส่วนตัวและหน้าข้อมูลความเป็นส่วนตัว: การแจ้งเตือนที่บังคับจะแจ้งให้ผู้ใช้ทราบอย่างชัดเจนว่าแอปขอช่องข้อมูลใดบ้าง (เช่น หมายเลขโทรศัพท์ อีเมล)
ผู้ให้บริการเซสชัน
ผู้ให้บริการเซสชัน (packages/providers/ContactsProvider) ทำหน้าที่เป็นตัวกลางที่ปลอดภัยระหว่างแอปไคลเอ็นต์กับผู้ให้บริการรายชื่อติดต่อ
- บทบาท: ใช้ผู้ให้บริการเซสชันเมื่อเปิดใช้เครื่องมือเลือกโดยใช้
Intent.ACTION_PICK_CONTACTSเท่านั้น - การจัดการเซสชัน: เมื่อผู้ใช้เลือกรายชื่อติดต่อ UI ของเครื่องมือเลือกจะเขียนข้อมูลการเลือก (แมปกับ UID ของไคลเอ็นต์) ลงในผู้ให้บริการเซสชัน
- การเข้าถึงข้อมูล: ผู้ให้บริการจะส่งคืน URI
content://com.android.providers.contacts.picker.sessionsไปยังเครื่องมือเลือก เครื่องมือเลือกจะใช้แฟลกรีดที่เหมาะสมก่อนส่งคืน URI ไปยังแอปไคลเอ็นต์ URI นี้จะให้สิทธิ์อ่านแบบละเอียดชั่วคราวแก่ช่องข้อมูลที่เฉพาะเจาะจงซึ่งผู้ใช้เลือกไว้ โดยไม่เปิดเผยข้อมูลทั้งหมดของรายชื่อติดต่อ - การเข้าถึงที่มีสิทธิ์: ลายเซ็น
android.permission.MANAGE_CONTACTS_PICKER_SESSIONและสิทธิ์ที่มีสิทธิ์จะปกป้องการเข้าถึงแบบเขียนไปยังผู้ให้บริการเซสชัน เพื่อให้มั่นใจว่ามีเพียงเครื่องมือเลือกของระบบที่เชื่อถือได้เท่านั้นที่สร้างเซสชันได้
การผสานรวม
ผู้ผลิตฮาร์ดแวร์และพาร์ทเนอร์ต้องรวมเครื่องมือเลือกรายชื่อติดต่อ Android ไว้ในบิลด์ที่ใช้ Android 17 ขึ้นไป
Intent ที่รองรับ
Intent.ACTION_PICK_CONTACTS: Intent ที่แนะนำสำหรับแอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไปIntent.ACTION_PICK: ยังคงไว้เพื่อความเข้ากันได้แบบย้อนหลัง ระบบจะกำหนดเส้นทางคำขอเหล่านี้ไปยังเครื่องมือเลือกใหม่โดยอัตโนมัติสำหรับ MIME ประเภทที่รองรับ (อีเมล โทรศัพท์ หรือรายชื่อติดต่อ)
การจัดการเซสชัน
ผู้ให้บริการเซสชันจะบังคับใช้นโยบายการล้างข้อมูลที่เข้มงวดเพื่อรักษาความสมบูรณ์ของอุปกรณ์และความเป็นส่วนตัว
- งานล้างข้อมูล: งานของระบบ (
CleanupJobService) จะทำงานเป็นระยะเพื่อนำข้อมูลเซสชันที่มีอายุมากกว่า 24 ชั่วโมงออก - ขีดจำกัดแถว: ตารางผู้ให้บริการเซสชันมีขีดจำกัดสูงสุด 5, 000 แถวเพื่อป้องกันการใช้พื้นที่เก็บข้อมูลมากเกินไป หากตารางมีขนาดถึงขีดจำกัดนี้ ระบบจะตัดแถวที่เก่าที่สุดออกโดยอัตโนมัติก่อนที่จะแทรกข้อมูลเซสชันใหม่
- การเก็บข้อมูลถาวร: ข้อมูลเซสชันเป็นข้อมูลชั่วคราว แอปไคลเอ็นต์ต้องเก็บข้อมูลรายชื่อติดต่อที่ส่งคืนทันทีเมื่อได้รับ
สิทธิ์
การเข้าถึงแบบเขียนไปยังผู้ให้บริการเซสชันต้องใช้สิทธิ์ android.permission.MANAGE_CONTACTS_PICKER_SESSION ซึ่งจำกัดไว้สำหรับแพ็กเกจเครื่องมือเลือกรายชื่อติดต่อ Android
การปรับแต่งและการปฏิบัติตามข้อกำหนด
พาร์ทเนอร์สามารถปรับแต่งองค์ประกอบภาพ เช่น แบบอักษรและสี แต่การใช้งานต้องเป็นไปตามส่วนที่ 3.18.2 (TBD) ของ CDD ของ Android
การตรวจสอบ
พาร์ทเนอร์ต้องยืนยันการใช้งานโดยใช้ทั้ง Compatibility Test Suite (CTS) และ Google Mobile Services Test Suite (GTS)