بدءًا من Android 10 ، يتم الوصول إلى البيانات المتعلقة بتقارب جهات الاتصال ، والتي يديرها مكون مزود جهات الاتصال (مصدر البيانات المرئية في تطبيق جهات الاتصال بالجهاز) ، بشكل مختلف عن Android 9 والإصدارات الأقل.
قبل Android 10 ، استخدمت التطبيقات موفر جهات الاتصال للوصول إلى البيانات ونقلها بين الجهاز والخدمات عبر الإنترنت. يتميز Android 10 بالتغييرات المتعلقة بإمكانية الوصول إلى البيانات لضمان زيادة خصوصية المستخدم في جميع أجهزة Android 10 التي تستخدم مزود جهات الاتصال. أولاً ، لا تحتوي قاعدة البيانات الأساسية على بيانات تقارب جهات الاتصال. لذلك لا تستطيع التطبيقات الكتابة إليها أو القراءة منها. تشمل التغييرات ما يلي:
- لا يقوم موفر جهات الاتصال بتسجيل البيانات المتعلقة بتقارب جهات الاتصال ، مثل عدد المرات التي تم فيها الاتصال بالمستخدم أو آخر مرة تم الاتصال بها أو التطبيق المستخدم أو الشخص الذي تم الاتصال به أو أي بيانات تاريخية ذات صلة.
- لا تفرز فئة
MultiAutoCompleteTextView
في واجهة برمجة تطبيقات الإكمال التلقائي لموفر جهات الاتصال نتائج الاستعلام حسب عداد التفاعل. - لا يوفر إطار عمل Android ترتيبًا ضمنيًا لجهات الاتصال. (ومع ذلك ، لا يزال ترتيب جهات الاتصال الواضح الذي يتحكم فيه المستخدم (مثل جهات الاتصال المميزة بنجمة )).
لتنفيذ هذه التغييرات ، قم بأحد الإجراءات التالية:
- استخدم أحدث موفر جهات الاتصال.
- قم بتحديث إصدارك (إذا كنت تستخدم إصدارًا متشعبًا).
بالإضافة إلى ذلك ، قم بتحديث أي تطبيقات تعتمد على ميزات مزود جهات الاتصال المهملة . لا يُسمح بإصدارات API المصممة لتكون حلولاً بديلة للوظائف المهملة.
بالنسبة لنظام التشغيل Android 9 والإصدارات الأقدم ، لم تتم إزالة بيانات التفاعل مع جهات الاتصال من مزود جهات الاتصال. بدلاً من ذلك ، يتم مسح بيانات تفاعل الاتصال بشكل دوري (مرة واحدة تقريبًا في اليوم) لمحاكاة المكافئ في Android 10. يخزن موفر جهات الاتصال هذه المعلومات ، ولكن بشكل مؤقت فقط.
تغييرات API
من المتوقع أن يكون لهذه التغييرات تأثير كبير على واجهات برمجة التطبيقات. على سبيل المثال ، لن يعمل ترتيب الإكمال التلقائي بشكل جيد. تشمل التأثيرات المحتملة على سلوك واجهة برمجة التطبيقات ما يلي:
- لن يقوم موفر جهات الاتصال بتخزين تفضيلات المستخدم أو التفاعلات مع جهة الاتصال في أعمدة جدول
ContactsContract.Contacts
. - لن تقوم واجهة برمجة تطبيقات الإكمال التلقائي بفرز النتائج حسب عداد التفاعل.
- لن يتم تحديث الأعمدة
TIMES_CONTACTED
/TIMES_USED
وLAST_TIME_CONTACTED
/LAST_TIME_USED
. - يتم مسحها (إما
null
أو مضبوطة على 0 ، اعتمادًا على الأعمدة المتأثرة) عند الترقية إلى Android 10. - يؤدي الترتيب في استعلام الإكمال التلقائي لواجهات برمجة التطبيقات إلى عرض النتائج مرتبة أبجديًا ، وليس حسب معلومات التقارب أبدًا.
- لا تؤدي استدعاءات واجهة برمجة التطبيقات لجهات الاتصال المتكررة (على سبيل المثال ، استخدام سلسلة عامل التصفية
CONTENT_FREQUENT_URI
) إلى أي نتائج.
بشكل عام ، إذا كان أي من عناصر واجهة برمجة تطبيقات موفر جهات الاتصال التي تم إهمالها يستخدم عدادات ، فإن تلك العدادات (عند استخدامها في Android 10) تحتوي على 0 ، وتعيد 0 عند الاستعلام. يتم تجاهل طلبات التحديث من واجهات برمجة التطبيقات المتأثرة. على سبيل المثال ، تم إهمال فئة ContactsContract.DataUsageFeedback
، لذلك يتم تجاهل مكالمات تحديث وحذف هذه الفئة.
الحقول التي تؤثر على واجهات برمجة التطبيقات
لقد تغيرت هذه المجالات في 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 | 10 مرتجعات |
---|---|---|
ContactsContract.Contacts ContactsContract.RawContacts ContactsContract.Data ContactsContract.Entity | ContactOptionsColumns TIMES_CONTACTED LAST_TIME_CONTACTED | تحتوي هذه الأعمدة دائمًا على 0 ، بغض النظر عن كيفية استخدامها. يتم تجاهل محاولات تعديلها. |
Contacts | markAsContacted() | لايوجد عملية. |
ContactsContract.DataUsageFeedback | | لايوجد عملية. |
ContactsContract.Contacts | Strequent ( مميز بنجمة + متكرر)CONTENT_STREQUENT_FILTER_URI CONTENT_STREQUENT_URI CONTENT_FREQUENT_URI | إرجاع جهات الاتصال المميزة بنجمة فقط. لم يتم إرجاع أي اتصالات متكررة. |
ContactsContract.CommonDataKinds.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable | تصفية واجهات برمجة التطبيقات (تسمى أيضًا الإكمال التلقائي) | النتائج غير مرتبة حسب التقارب. هذه مرتبة بنجمة والاسم . |
البدائل
لا توجد بدائل لحقول API المهملة. لا يُسمح بالحلول المصممة للتحايل على هذه القيود ، سواء في شكل واجهات برمجة تطبيقات جديدة أو حقول جديدة.
تطبيق
لا تحتاج إلى فعل أي شيء لتنفيذ هذه التغييرات. إنها جزء من مبادرة زيادة خصوصية المستخدم على نظام التشغيل Android. ومع ذلك ، إذا كانت تطبيقاتك تعتمد على ميزات مهملة ، فقد ترغب في تحديث تطبيقاتك للتعويض عن أي تغييرات. بالإضافة إلى ذلك ، إذا كنت تستخدم إصدارًا متشعبًا من موفر جهات الاتصال ، فيجب عليك تحديث مزود جهات الاتصال الخاص بك.
لا تخصيص
لا تخصص أو تتغلب على تغييرات معلومات تقارب جهات الاتصال. لقد تم تضمينها في إطار العمل ، وإجراء أي تغييرات يأخذك بعيدًا عن الامتثال. لا تقم أبدًا بتغيير الإعدادات الافتراضية أو توفير بدائل مستتر.