ตั้งแต่ Android 10 เป็นต้นไป ข้อมูลที่เกี่ยวข้องกับผู้ติดต่อที่จัดการโดยคอมโพเนนต์ ผู้ให้บริการผู้ติดต่อ (แหล่งที่มาของข้อมูลที่เห็นในแอปผู้ติดต่อของอุปกรณ์) จะได้รับการเข้าถึงแตกต่างไปจากใน Android 9 และต่ำกว่า
ก่อน Android 10 แอปใช้ผู้ให้บริการรายชื่อติดต่อเพื่อเข้าถึงข้อมูลและถ่ายโอนระหว่างอุปกรณ์และบริการออนไลน์ การเปลี่ยนแปลงฟีเจอร์ของ Android 10 เกี่ยวกับการเข้าถึงข้อมูลเพื่อเพิ่มความเป็นส่วนตัวของผู้ใช้ในอุปกรณ์ Android 10 ทั้งหมดที่ใช้ผู้ให้บริการรายชื่อติดต่อ ประการแรก ฐานข้อมูลพื้นฐานไม่มีข้อมูลความสัมพันธ์ของผู้ติดต่อ ดังนั้นแอปจึงไม่สามารถเขียนหรืออ่านจากแอปได้ การเปลี่ยนแปลงมีดังต่อไปนี้:
- ผู้ให้บริการรายชื่อติดต่อจะไม่บันทึกข้อมูลที่เกี่ยวข้องกับผู้ติดต่อ เช่น จำนวนครั้งที่มีการติดต่อผู้ใช้ ครั้งสุดท้ายของการติดต่อ แอปที่ใช้ บุคคลที่ติดต่อ หรือข้อมูลประวัติใดๆ ที่เกี่ยวข้อง
- คลาส
MultiAutoCompleteTextView
ใน API การเติมข้อความอัตโนมัติของผู้ให้บริการผู้ติดต่อจะไม่เรียงลำดับผลลัพธ์คิวรีตามตัวนับการโต้ตอบ - กรอบงาน Android ไม่ได้ให้การจัดอันดับผู้ติดต่อโดยนัย (อย่างไรก็ตาม การจัดอันดับผู้ติดต่อ ที่ชัดเจน และควบคุมโดยผู้ใช้ (เช่น ผู้ติดต่อ ที่ติดดาว ) จะยังคงอยู่)
หากต้องการใช้การเปลี่ยนแปลงเหล่านี้ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
- ใช้ผู้ให้บริการรายชื่อติดต่อล่าสุด
- อัปเดตเวอร์ชันของคุณ (หากคุณใช้เวอร์ชันที่แยกส่วน)
นอกจากนี้ ให้อัปเดตแอปที่ใช้ คุณลักษณะของผู้ให้บริการรายชื่อติดต่อที่เลิกใช้แล้ว ไม่อนุญาตให้ใช้ เวอร์ชัน API ที่ออกแบบมาเพื่อใช้แก้ปัญหาเฉพาะหน้าของฟังก์ชันที่เลิกใช้แล้ว
สำหรับ Android 9 และต่ำกว่า ข้อมูลการโต้ตอบการติดต่อจากผู้ให้บริการรายชื่อจะไม่ถูกลบออก แต่ข้อมูลการติดต่อโต้ตอบจะถูกล้างเป็นระยะ (ประมาณวันละครั้ง) เพื่อจำลองข้อมูลที่เทียบเท่าใน Android 10 ผู้ให้บริการรายชื่อจะจัดเก็บข้อมูลนี้ไว้ชั่วคราวเท่านั้น
การเปลี่ยนแปลง API
การเปลี่ยนแปลงเหล่านี้คาดว่าจะส่งผลกระทบอย่างมากต่อ API ตัวอย่างเช่น การจัดอันดับการเติมข้อความอัตโนมัติจะไม่ทำงานเช่นกัน ผลกระทบที่อาจเกิดขึ้นกับพฤติกรรมของ API มีดังต่อไปนี้:
- ผู้ให้บริการรายชื่อติดต่อจะไม่จัดเก็บการตั้งค่าของผู้ใช้หรือการโต้ตอบกับผู้ติดต่อในคอลัมน์ตาราง
ContactsContract.Contacts
- API เติมข้อความอัตโนมัติจะไม่จัดเรียงผลลัพธ์ตามตัวนับการโต้ตอบ
- คอลัมน์
TIMES_CONTACTED
/TIMES_USED
และLAST_TIME_CONTACTED
/LAST_TIME_USED
จะไม่ได้รับการอัปเดต - สิ่งเหล่านี้ชัดเจน (เป็น
null
หรือตั้งค่าเป็น 0 ขึ้นอยู่กับคอลัมน์ที่ได้รับผลกระทบ) เมื่ออัปเกรดเป็น Android 10 - การจัดอันดับใน API การค้นหาที่เติมข้อความอัตโนมัติจะส่งกลับผลลัพธ์ที่จัดเรียงตามตัวอักษร โดยไม่เรียงตามข้อมูลความสัมพันธ์
- การเรียก API สำหรับผู้ติดต่อที่ใช้บ่อย (เช่น การใช้สตริงตัวกรอง
CONTENT_FREQUENT_URI
) จะไม่ส่งคืนผลลัพธ์
โดยทั่วไป หากองค์ประกอบ Contacts Provider API ที่เลิกใช้งานแล้วใช้ตัวนับ ตัวนับเหล่านั้น (เมื่อใช้ใน 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 ต่างๆ ของคุณได้ โปรดยืนยันกรณีการใช้งานของคุณ
ระดับ | ฟิลด์ 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 | API ตัวกรอง (หรือที่เรียกว่าการเติมข้อความอัตโนมัติ) | ผลลัพธ์ไม่เรียงลำดับตามความสัมพันธ์ สิ่งเหล่านี้จัดเรียงตามชื่อ ที่ติดดาว และ ชื่อ |
ทางเลือก
ไม่มีทางเลือกอื่นนอกเหนือจากช่อง API ที่เลิกใช้แล้ว ไม่อนุญาตให้ใช้วิธีแก้ปัญหาเฉพาะหน้าที่ออกแบบมาเพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ ไม่ว่าจะอยู่ในรูปแบบของ API ใหม่หรือช่องใหม่
การนำไปปฏิบัติ
คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อดำเนินการเปลี่ยนแปลงเหล่านี้ พวกเขาเป็นส่วนหนึ่งของความคิดริเริ่มในการเพิ่มความเป็นส่วนตัวของผู้ใช้บนแพลตฟอร์มระบบปฏิบัติการ Android อย่างไรก็ตาม หากแอปของคุณใช้ฟีเจอร์ที่เลิกใช้งานแล้ว คุณอาจต้องการอัปเดตแอปเพื่อชดเชยการเปลี่ยนแปลงใดๆ นอกจากนี้ หากคุณใช้เวอร์ชันที่แยกของผู้ให้บริการผู้ติดต่อ คุณต้องอัปเดตผู้ให้บริการผู้ติดต่อของคุณ
ไม่มีการปรับแต่ง
อย่าปรับแต่งหรือหลีกเลี่ยงการเปลี่ยนแปลงข้อมูลความสัมพันธ์ของผู้ติดต่อ สิ่งเหล่านี้ถูกสร้างขึ้นในกรอบงาน และการเปลี่ยนแปลงใด ๆ จะทำให้คุณไม่ปฏิบัติตามข้อกำหนด อย่าเปลี่ยนการตั้งค่าเริ่มต้นหรือให้ทางเลือกลับๆ