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