פרטי הספק של אנשי הקשר והשיוך שלהם

החל מגרסה 10 של Android, הגישה לנתונים שקשורים לקשרים, שמנוהלים על ידי הרכיב ספק אנשי הקשר (מקור הנתונים שמוצגים באפליקציית אנשי הקשר של המכשיר), שונה מזו שבגרסה 9 ומטה.

לפני Android 10, אפליקציות השתמשו בספק אנשי הקשר כדי לגשת לנתונים ולהעביר אותם בין מכשיר לשירותים אונליין. ב-Android 10 יש שינויים לגבי נגישות הנתונים, כדי לשפר את פרטיות המשתמשים בכל מכשירי Android 10 שמשתמשים בספק אנשי הקשר. ראשית, מסד הנתונים הבסיסי לא מכיל נתונים של תחומי עניין של משתמשים. לכן, אפליקציות לא יכולות לכתוב או לקרוא ממנו. השינויים כוללים:

  • ספק אנשי הקשר לא מתעד נתונים שקשורים לקשרים של המשתמשים, כמו מספר הפעמים שבהן נוצר קשר עם משתמש, הפעם האחרונה שבה נוצר קשר, האפליקציה שבה נעשה שימוש, האדם שאליו נוצר קשר או נתונים היסטוריים קשורים.
  • הכיתה MultiAutoCompleteTextView ב-API להשלמה אוטומטית של ספק אנשי הקשר לא ממיינת את תוצאות השאילתות לפי מונה האינטראקציות.
  • מסגרת Android לא מספקת דירוג של אנשי קשר סמוי. (עם זאת, הדירוג של אנשי הקשר הבוטה שנמצא בשליטת המשתמש (כמו אנשי קשר בכוכב) יישאר).

כדי להטמיע את השינויים האלה, מבצעים את אחת מהפעולות הבאות:

  • להשתמש ב-Contacts Provider העדכני ביותר.
  • מעדכנים את הגרסה (אם משתמשים בגרסה מתפצלת).

בנוסף, צריך לעדכן את כל האפליקציות שמסתמכות על המאפיינים של ספק אנשי הקשר שהוצאו משימוש. אסור להשתמש בגרסאות 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:

השדות המושפעים ב-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 חדשים או בשדות חדשים.

הטמעה

אתם לא צריכים לעשות שום דבר כדי להטמיע את השינויים האלה. הן חלק מהיוזמה לשיפור הפרטיות של המשתמשים בפלטפורמת מערכת ההפעלה Android. עם זאת, אם האפליקציות שלכם מסתמכות על תכונות שהוצאו משימוש, כדאי לעדכן אותן כדי לפצות על השינויים. בנוסף, אם אתם משתמשים בגרסה מורחבת של ספק אנשי הקשר, עליכם לעדכן את ספק אנשי הקשר.

ללא התאמה אישית

אין להתאים אישית את השינויים במידע על קשרי אנשי הקשר או לעקוף אותם. הם מובנים במסגרת, וכל שינוי בהם גורם לכך שהמערכת לא תהיה תואמת. לעולם אל תשנו את הגדרות ברירת המחדל או תספקו חלופות לדלתות אחוריות.