اطلاعات ارائه دهنده تماس و وابستگی ها

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

در Android 10، داده‌های مرتبط با مخاطبین که توسط مؤلفه Contacts Provider (منبع داده‌های مشاهده شده در برنامه مخاطبین دستگاه) مدیریت می‌شوند، متفاوت از Android 9 و پایین‌تر قابل دسترسی هستند.

قبل از Android 10، برنامه ها از Contacts Provider برای دسترسی به داده ها و انتقال آن بین دستگاه و سرویس های آنلاین استفاده می کردند. Android 10 تغییراتی را در مورد دسترسی به داده ها برای اطمینان از افزایش حریم خصوصی کاربر در همه دستگاه های Android 10 که از Contacts Provider استفاده می کنند، دارد. برای یکی، پایگاه داده زیربنایی حاوی داده های وابستگی تماس نیست. بنابراین برنامه ها نمی توانند روی آن بنویسند یا از آن بخوانند. تغییرات شامل موارد زیر است:

  • ارائه‌دهنده مخاطبین، داده‌های مرتبط با مخاطبین را ثبت نمی‌کند، مانند تعداد دفعاتی که با کاربر تماس گرفته شده، آخرین بار تماس، برنامه استفاده‌شده، فرد تماس‌گرفته، یا هر داده تاریخی مرتبط.
  • کلاس MultiAutoCompleteTextView در API تکمیل خودکار Contacts Provider نتایج پرس و جو را بر اساس شمارنده تعامل مرتب نمی کند.
  • چارچوب Android رتبه‌بندی ضمنی مخاطبین را ارائه نمی‌کند. (با این حال، رتبه بندی مخاطبین صریح و کنترل شده توسط کاربر (مانند مخاطبین ستاره دار ) باقی می ماند).

برای اجرای این تغییرات یکی از موارد زیر را انجام دهید:

  • از آخرین ارائه دهنده مخاطبین استفاده کنید.
  • نسخه خود را به روز کنید (اگر از نسخه فورکی استفاده می کنید).

علاوه بر این، برنامه‌هایی را که به ویژگی‌های منسوخ ارائه‌دهنده مخاطبین متکی هستند، به‌روزرسانی کنید. نسخه‌های API که برای راه‌حلی برای عملکردهای منسوخ طراحی شده‌اند، مجاز نیستند.

برای Android 9 و پایین‌تر، داده‌های تعامل با مخاطبین از ارائه‌دهنده مخاطبین حذف نشده است. در عوض، داده‌های تعامل تماس به‌صورت دوره‌ای (تقریباً یک بار در روز) برای شبیه‌سازی معادل آن در Android 10 پاک می‌شود. ارائه‌دهنده مخاطبین این اطلاعات را ذخیره می‌کند، اما فقط به‌طور موقت.

API تغییر می کند

انتظار می رود این تغییرات تاثیر زیادی بر API ها داشته باشد. برای مثال، رتبه‌بندی تکمیل خودکار به خوبی عمل نمی‌کند. اثرات بالقوه بر رفتار API شامل موارد زیر است:

  • ارائه دهنده مخاطبین، تنظیمات برگزیده کاربر یا تعامل با آن مخاطب را در ستون های جدول ContactsContract.Contacts ذخیره نمی کند.
  • API تکمیل خودکار نتایج را بر اساس شمارنده تعامل مرتب نمی‌کند.
  • TIMES_CONTACTED / TIMES_USED و LAST_TIME_CONTACTED / LAST_TIME_USED نمی‌شوند.
    • پس از ارتقاء به Android 10، این موارد پاک می شوند (بسته به ستون های آسیب دیده روی null یا صفر تنظیم می شوند).
    • رتبه‌بندی در APIهای جستجوی تکمیل خودکار، نتایجی را که بر اساس حروف الفبا مرتب شده‌اند، برمی‌گرداند، نه بر اساس اطلاعات وابستگی.
    • تماس‌های API برای مخاطبین مکرر (مثلاً با استفاده از رشته فیلتر CONTENT_FREQUENT_URI ) هیچ نتیجه‌ای ندارد.

به طور کلی، اگر هر یک از عناصر API ارائه‌دهنده مخاطبین منسوخ از شمارنده‌ها استفاده می‌کند، آن شمارنده‌ها (زمانی که در Android 10 استفاده می‌شوند) حاوی 0 هستند و در صورت درخواست، 0 را برمی‌گردانند. درخواست‌های به‌روزرسانی از APIهای آسیب‌دیده نادیده گرفته می‌شوند. به عنوان مثال، کلاس ContactsContract.DataUsageFeedback منسوخ شده است، بنابراین به روز رسانی و حذف تماس های این کلاس نادیده گرفته می شود.

فیلدهایی که بر API ها تأثیر می گذارند

این فیلدها در اندروید 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
فیلتر کردن (همچنین به نام تکمیل خودکار) API

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

نتایج بر اساس قرابت مرتب نشده اند. اینها بر اساس ستاره دار و نام مرتب شده اند.

جایگزین، گزینه ها

هیچ جایگزینی برای فیلدهای API منسوخ شده وجود ندارد. راه‌حل‌هایی که برای دور زدن این محدودیت‌ها طراحی شده‌اند، چه در قالب APIهای جدید یا فیلدهای جدید، مجاز نیستند.

پیاده سازی

برای اجرای این تغییرات نیازی به انجام هیچ کاری نیست. آنها بخشی از ابتکار عمل برای افزایش حریم خصوصی کاربر در پلتفرم سیستم عامل اندروید هستند. با این حال، اگر برنامه‌های شما به ویژگی‌های منسوخ شده متکی هستند، ممکن است بخواهید برنامه‌های خود را برای جبران هرگونه تغییر به‌روزرسانی کنید. بعلاوه، اگر از نسخه فورک شده Contacts Provider استفاده می کنید، باید Contacts Provider خود را به روز کنید.

بدون سفارشی سازی

تغییرات اطلاعات وابستگی مخاطبین را سفارشی نکنید یا کار نکنید. آنها در چارچوب تعبیه شده اند و ایجاد هر گونه تغییری شما را از انطباق خارج می کند. هرگز تنظیمات پیش فرض را تغییر ندهید یا گزینه های درب پشتی ارائه نکنید.