החל מגרסה 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
לא יעודכנו. - אחרי השדרוג ל-Android 10, הערכים האלה יימחקו (ל-
null
או ל-0, בהתאם לעמודות המושפעות). - הדירוג בממשקי ה-API של שאילתות ההשלמה האוטומטית מחזיר תוצאות שממוינות לפי סדר אלפביתי, אף פעם לפי פרטי ההתאמה.
- קריאות ל-API עבור אנשי קשר תדירים (לדוגמה, באמצעות מחרוזת המסנן
CONTENT_FREQUENT_URI
) לא מחזירות תוצאות.
באופן כללי, אם באחד מהרכיבים של ממשק ה-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. עם זאת, אם האפליקציות שלכם מסתמכות על תכונות שהוצאו משימוש, כדאי לעדכן אותן כדי לפצות על השינויים. בנוסף, אם אתם משתמשים בגרסה מורחבת של ספק אנשי הקשר, עליכם לעדכן את ספק אנשי הקשר.
ללא התאמה אישית
אין להתאים אישית את השינויים במידע על ההתאמה של אנשי הקשר או לעקוף אותם. הם מובנים במסגרת, וכל שינוי בהם גורם לכך שהחשבון לא יעמוד בדרישות התאימות. אף פעם אין לשנות את הגדרות ברירת המחדל או לספק חלופות לשער אחורי.