ตั้งแต่ Android 10 เป็นต้นไป ข้อมูลที่เกี่ยวข้องกับความเกี่ยวข้องของรายชื่อติดต่อซึ่งจัดการโดยคอมโพเนนต์ Contacts Provider (แหล่งที่มาของข้อมูลที่แสดงในแอปรายชื่อติดต่อของอุปกรณ์) จะเข้าถึงแตกต่างจากใน Android 9 และต่ำกว่า
ก่อนที่จะมี Android 10 แอปใช้ผู้ให้บริการรายชื่อติดต่อเพื่อเข้าถึงและโอนข้อมูลระหว่างอุปกรณ์กับบริการออนไลน์ Android 10 มีการเปลี่ยนแปลงเกี่ยวกับการเข้าถึงข้อมูลเพื่อให้มั่นใจว่าความเป็นส่วนตัวของผู้ใช้จะเพิ่มขึ้นในอุปกรณ์ Android 10 ทุกเครื่องที่ใช้ผู้ให้บริการ Contacts ประการแรก ฐานข้อมูลที่สําคัญไม่มีข้อมูลความเกี่ยวข้องของรายชื่อติดต่อ ดังนั้นแอปจึงไม่สามารถเขียนหรืออ่านจากไดเรกทอรีดังกล่าว การเปลี่ยนแปลงมีดังนี้
- ผู้ให้บริการรายชื่อติดต่อจะไม่บันทึกข้อมูลที่เกี่ยวข้องกับความเกี่ยวข้องของรายชื่อติดต่อ เช่น จํานวนครั้งที่ผู้ใช้ได้รับการติดต่อ ครั้งล่าสุดที่มีการติดต่อ แอปที่ใช้ บุคคลที่ติดต่อ หรือข้อมูลย้อนหลังที่เกี่ยวข้อง
- คลาส
MultiAutoCompleteTextView
ใน API การเติมข้อความอัตโนมัติของผู้ให้บริการรายชื่อติดต่อจะไม่จัดเรียงผลการค้นหาตามตัวนับการโต้ตอบ - เฟรมเวิร์ก Android ไม่ได้จัดอันดับผู้ติดต่อโดยนัย (อย่างไรก็ตาม ระบบจะยังคงจัดอันดับรายชื่อติดต่อที่ชัดเจนซึ่งผู้ใช้ควบคุมได้ (เช่น รายชื่อติดต่อที่ติดดาว) ไว้)
หากต้องการใช้การเปลี่ยนแปลงเหล่านี้ ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
- ใช้ Contacts Provider เวอร์ชันล่าสุด
- อัปเดตเวอร์ชัน (หากคุณใช้เวอร์ชันที่แยกออกมา)
นอกจากนี้ ให้อัปเดตแอปที่ใช้ฟีเจอร์ของผู้ให้บริการ Contacts ที่เลิกใช้งาน ไม่อนุญาตให้ใช้เวอร์ชัน API ที่ออกแบบมาเพื่อแก้ปัญหาของฟังก์ชันที่เลิกใช้งานแล้ว
สำหรับ Android 9 และต่ำกว่า ระบบจะไม่นำข้อมูลการโต้ตอบกับรายชื่อติดต่อออกจากผู้ให้บริการรายชื่อติดต่อ แต่ระบบจะล้างข้อมูลการโต้ตอบกับรายชื่อติดต่อเป็นระยะ (ประมาณวันละครั้ง) เพื่อจำลองการทำงานที่เทียบเท่าใน Android 10 ผู้ให้บริการรายชื่อติดต่อจะจัดเก็บข้อมูลนี้ไว้ชั่วคราวเท่านั้น
การเปลี่ยนแปลง API
การเปลี่ยนแปลงเหล่านี้คาดว่าจะส่งผลกระทบอย่างมากต่อ API ตัวอย่างเช่น การจัดอันดับการเติมข้อความอัตโนมัติจะไม่มีประสิทธิภาพดีเท่า ผลกระทบที่อาจเกิดขึ้นกับลักษณะการทํางานของ API มีดังนี้
- ผู้ให้บริการรายชื่อติดต่อจะไม่จัดเก็บค่ากําหนดของผู้ใช้หรือการโต้ตอบกับรายชื่อติดต่อในคอลัมน์ตาราง
ContactsContract.Contacts
- Autocomplete API จะไม่จัดเรียงผลการค้นหาตามตัวนับการโต้ตอบ
- ระบบจะไม่อัปเดตคอลัมน์
TIMES_CONTACTED
/TIMES_USED
และLAST_TIME_CONTACTED
/LAST_TIME_USED
- ค่าเหล่านี้จะล้าง (เป็น
null
หรือตั้งเป็น 0 โดยขึ้นอยู่กับคอลัมน์ที่ได้รับผลกระทบ) เมื่ออัปเกรดเป็น Android 10 - การจัดอันดับใน Autocomplete Query API จะแสดงผลลัพธ์ที่เรียงตามลําดับตัวอักษร โดยไม่จัดตามข้อมูลความเกี่ยวข้อง
- การเรียก API สําหรับรายชื่อติดต่อที่พบบ่อย (เช่น การใช้สตริงตัวกรอง
CONTENT_FREQUENT_URI
) จะไม่แสดงผลลัพธ์
โดยทั่วไป หากองค์ประกอบ API ของผู้ให้บริการ Contacts ที่เลิกใช้งานใช้ตัวนับ ตัวนับเหล่านั้น (เมื่อใช้ใน Android 10) จะมีค่าเป็น 0 และแสดงผลเป็น 0 เมื่อมีการค้นหา ระบบจะไม่สนใจคำขออัปเดตจาก API ที่ได้รับผลกระทบ ตัวอย่างเช่น ระบบเลิกใช้งานคลาส ContactsContract.DataUsageFeedback
แล้ว ระบบจึงไม่สนใจการเรียกใช้การอัปเดตและลบในคลาสนี้
ฟิลด์ที่ส่งผลต่อ API
ช่องต่อไปนี้มีการเปลี่ยนแปลงใน Android 10
ContactsContract.ContactOptionsColumns#TIMES_CONTACTED
ContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTED
ContactsContract.DataUsageStatColumns#TIMES_USED
ContactsContract.DataUsageStatColumns#LAST_TIME_USED
ContactsContract#CONTENT_STREQUENT_FILTER_URI
ContactsContract.Contacts#CONTENT_STREQUENT_URI
ContactsContract.Contacts#CONTENT_FREQUENT_URI
ContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URI
ContactsContract.Contacts#CONTENT_FILTER_URI
ช่องที่ได้รับผลกระทบใน Android 10 อาจอยู่ใน API ต่างๆ ตามที่ระบุไว้ในตารางด้านล่าง ฟิลด์ API ที่เลิกใช้งานแล้วจะแสดงผลตามลักษณะการทำงานที่ระบุไว้ เนื่องจากฟิลด์ที่เลิกใช้งานเหล่านี้อาจใช้ใน API หลายรายการของคุณ โปรดยืนยัน Use Case
ชั้น | ฟิลด์ API | การส่งคืน 10 ครั้ง |
---|---|---|
ContactsContract.Contacts ContactsContract.RawContacts ContactsContract.Data ContactsContract.Entity
|
ContactOptionsColumns TIMES_CONTACTED LAST_TIME_CONTACTED
|
คอลัมน์เหล่านี้จะมีค่า 0 เสมอ ไม่ว่าจะมีการใช้งานอย่างไรก็ตาม ระบบจะไม่สนใจความพยายามในการแก้ไข |
Contacts
|
markAsContacted() |
ไม่มีการดำเนินการ |
ContactsContract.DataUsageFeedback
|
|
ไม่มีการดำเนินการ |
ContactsContract.Contacts
|
บ่อย (ติดดาว + บ่อย)CONTENT_STREQUENT_FILTER_URI CONTENT_STREQUENT_URI CONTENT_FREQUENT_URI
|
แสดงเฉพาะรายชื่อติดต่อที่ติดดาว ไม่พบรายชื่อที่ติดต่อบ่อย |
ContactsContract.CommonDataKinds.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable
|
Filter (หรือที่เรียกว่า Autocomplete) API
|
ผลลัพธ์ไม่ได้จัดเรียงตามความสัมพันธ์ โดยระบบจะจัดเรียงตามสถานะที่ติดดาวและชื่อ |
ทางเลือก
ไม่มีทางเลือกอื่นสําหรับช่อง API ที่เลิกใช้งาน ไม่อนุญาตให้ใช้วิธีแก้ปัญหาที่ออกแบบมาเพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ ไม่ว่าจะเป็นในรูปแบบของ API ใหม่หรือช่องใหม่
การใช้งาน
คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อใช้การเปลี่ยนแปลงเหล่านี้ นโยบายเหล่านี้เป็นส่วนหนึ่งของโครงการริเริ่มเพื่อเพิ่มความเป็นส่วนตัวของผู้ใช้บนแพลตฟอร์มระบบปฏิบัติการ Android อย่างไรก็ตาม หากแอปของคุณใช้ฟีเจอร์ที่เลิกใช้งานแล้ว คุณอาจต้องอัปเดตแอปเพื่อรองรับการเปลี่ยนแปลง นอกจากนี้ หากคุณใช้ผู้ให้บริการข้อมูลติดต่อเวอร์ชันที่แยกออกมา คุณต้องอัปเดตผู้ให้บริการข้อมูลติดต่อ
ไม่มีการปรับแต่ง
อย่าปรับแต่งหรือแก้ปัญหาการเปลี่ยนแปลงข้อมูลความสัมพันธ์ของรายชื่อติดต่อ เนื่องจากข้อมูลดังกล่าวจะฝังอยู่ในเฟรมเวิร์ก และการเปลี่ยนแปลงใดๆ จะทำให้คุณไม่เป็นไปตามข้อกำหนด อย่าเปลี่ยนแปลงการตั้งค่าเริ่มต้นหรือระบุทางเลือกที่เป็นประตูหลัง