ข้อมูลผู้ให้บริการรายชื่อติดต่อและความสัมพันธ์

ตั้งแต่ Android 10 เป็นต้นไป ข้อมูลที่เกี่ยวข้องกับความเกี่ยวข้องของรายชื่อติดต่อซึ่งจัดการโดยคอมโพเนนต์ Contacts Provider (แหล่งที่มาของข้อมูลที่แสดงในแอปรายชื่อติดต่อของอุปกรณ์) จะเข้าถึงได้แตกต่างจากใน Android 9 และต่ำกว่า

ก่อนที่จะมี Android 10 แอปใช้ผู้ให้บริการรายชื่อติดต่อเพื่อเข้าถึงและโอนข้อมูลระหว่างอุปกรณ์กับบริการออนไลน์ ฟีเจอร์ของ Android 10 จะมีการเปลี่ยนแปลงเกี่ยวกับการช่วยเหลือพิเศษเพื่อเพิ่มความเป็นส่วนตัวของผู้ใช้ในอุปกรณ์ Android 10 ทั้งหมดที่ใช้ Contacts Provider เหตุผลหนึ่งคือฐานข้อมูลที่สําคัญไม่มีข้อมูลความสัมพันธ์ของผู้ติดต่อ ดังนั้นแอปจึงไม่สามารถเขียนหรืออ่านจากไดเรกทอรีดังกล่าว การเปลี่ยนแปลงมีดังต่อไปนี้

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

โดยทั่วไปแล้ว ถ้าองค์ประกอบ Contacts Provider API ที่เลิกใช้งานแล้วใช้ตัวนับ ตัวนับเหล่านั้น (เมื่อใช้ใน Android 10) จะมี 0 และแสดงผล 0 เมื่อทำการค้นหา ระบบจะไม่สนใจคำขออัปเดตจาก API ที่ได้รับผลกระทบ ตัวอย่างเช่น ระบบเลิกใช้งานคลาส ContactsContract.DataUsageFeedback แล้ว ระบบจึงไม่สนใจการเรียกใช้การอัปเดตและการลบคลาสนี้

ฟิลด์ที่ส่งผลต่อ API

ช่องต่อไปนี้มีการเปลี่ยนแปลงใน Android 10

ช่องที่ได้รับผลกระทบใน 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

update
delete

ไม่มีการดำเนินการ
ContactsContract.Contacts บ่อย (ติดดาว + บ่อย)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
แสดงผลเป็นรายชื่อติดต่อที่ติดดาวเท่านั้น ไม่พบรายชื่อที่ติดต่อบ่อย
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
Filter (หรือที่เรียกว่า Autocomplete) API

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

ผลลัพธ์ไม่ได้จัดเรียงตามผู้สนใจ โดยระบบจะจัดเรียงตามติดดาวและชื่อ

ทางเลือก

ไม่มีทางเลือกอื่นสำหรับฟิลด์ API ที่เลิกใช้งานแล้ว ไม่อนุญาตให้ใช้วิธีแก้ปัญหาที่ออกแบบมาเพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ ไม่ว่าจะเป็นในรูปแบบของ API ใหม่หรือช่องใหม่

การใช้งาน

คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อใช้การเปลี่ยนแปลงเหล่านี้ นโยบายเหล่านี้เป็นส่วนหนึ่งของโครงการริเริ่มเพื่อเพิ่มความเป็นส่วนตัวของผู้ใช้บนแพลตฟอร์มระบบปฏิบัติการ Android อย่างไรก็ตาม หากแอปของคุณใช้ฟีเจอร์ที่เลิกใช้งานแล้ว คุณอาจต้องอัปเดตแอปเพื่อรองรับการเปลี่ยนแปลง นอกจากนี้ หากคุณใช้ผู้ให้บริการข้อมูลติดต่อเวอร์ชันที่แยกออกมา คุณต้องอัปเดตผู้ให้บริการข้อมูลติดต่อ

ไม่มีการปรับแต่ง

อย่าปรับแต่งหรือแก้ปัญหาการเปลี่ยนแปลงข้อมูลความสัมพันธ์ของรายชื่อติดต่อ เนื่องจากข้อมูลดังกล่าวจะฝังอยู่ในเฟรมเวิร์ก และการเปลี่ยนแปลงใดๆ จะทำให้คุณไม่เป็นไปตามข้อกำหนด อย่าแก้ไขการตั้งค่าเริ่มต้นหรือให้ทางเลือกอื่นอย่างลับๆ