הכלי לבחירת אנשי קשר ב-Android

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

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

ארכיטקטורה

הכלי לבחירת אנשי קשר מורכב משני רכיבים עיקריים:

  • אפליקציית ממשק המשתמש של הכלי לבחירת אנשי קשר: הרכיב הזה משמש כממשק שפונה למשתמשים לבחירת אנשי קשר.
  • ספק הסשן: הרכיב הזה פועל כשירות backend שמנהל את סשן הגישה הזמני.

דיאגרמת רצף של הכלי לבחירת אנשי קשר

איור 1. תרשים רצף

ממשק המשתמש של כלי הבחירה

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

  • מספרי טלפון בלבד: בממשק המשתמש מוצגים אנשי קשר שמכילים מספרי טלפון.
  • אימיילים בלבד: בממשק המשתמש מוצגים אנשי קשר שמכילים כתובות אימייל.
  • פרטים ליצירת קשר בהתאמה אישית: בממשק המשתמש מוצגים אנשי קשר שתואמים לשדות נתונים ספציפיים שהתבקשו.

בנוסף, ממשק המשתמש תומך בתכונות הבאות:

  • רשימה ממוינת לפי סדר אלפביתי: אנשי הקשר ממוינים לפי סדר אלפביתי, ללא כפילויות.
  • אווטרים של אנשי קשר: בממשק המשתמש מוצגות תמונות או אווטרים של אנשי קשר.
  • מועדפים: קטגוריית המועדפים מוצגת בחלק העליון של רשימת אנשי הקשר.
  • החלפת פרופילים: התכונה הזו מאפשרת למשתמשים לבחור אנשי קשר מפרופילים שונים (לדוגמה, פרופיל לצורכי עבודה לעומת פרופיל פרטי).
  • בחירה יחידה ובחירה מרובה: המערכת תומכת במצבי בחירה יחידה ובחירה מרובה (ההגבלה שמוגדרת כברירת מחדל היא 50, והמקסימום הוא 100).
  • תצוגה מקדימה של הבחירה: המשתמשים יכולים לראות תצוגה מקדימה של אנשי הקשר שהם בחרו ולנהל אותם לפני שהם מאשרים.
  • גלילה מהירה: התכונה הזו מאפשרת ניווט מהיר ברשימת אנשי הקשר.
  • חיפוש: יש סרגל חיפוש שמאפשר למצוא אנשי קשר ספציפיים.
  • באנר בנושא פרטיות ודף פרטיות: הודעה חובה שמיידעת את המשתמשים בדיוק אילו שדות נתונים (לדוגמה, מספרי טלפון, כתובות אימייל) האפליקציה מבקשת.

ספק הסשנים

ספק הסשן (packages/providers/ContactsProvider) משמש כמתווך מאובטח בין אפליקציית הלקוח לבין ספק אנשי הקשר.

  • תפקיד: שימוש בספק הסשן רק כשמפעילים את הכלי לבחירת חשבון באמצעות Intent.ACTION_PICK_CONTACTS.
  • ניהול סשנים: כשמשתמש בוחר אנשי קשר, ממשק המשתמש של הכלי לבחירת אנשי קשר כותב את נתוני הבחירה (שממופים למזהה המשתמש של הלקוח) בספק הסשנים.
  • גישה לנתונים: הספק מחזיר URI של content://com.android.providers.contacts.picker.sessions לכלי לבחירת קבצים. כלי הבחירה מחיל דגלי קריאה מתאימים לפני שהוא מחזיר את ה-URI לאפליקציית הלקוח. ה-URI הזה מעניק גישת קריאה זמנית וגרנולרית לשדות הנתונים הספציפיים שהמשתמש בחר, בלי לחשוף את כל נתוני איש הקשר.
  • גישה עם הרשאות: החתימה android.permission.MANAGE_CONTACTS_PICKER_SESSION וההרשאות המיוחדות מגנות על גישת הכתיבה לספק הסשנים, ומבטיחות שרק הכלי המהימן לבחירת המערכת יוכל ליצור סשנים.

שילוב

יצרני חומרה ושותפים חייבים לכלול את הכלי לבחירת אנשי קשר ב-Android בגרסאות Android 17 ואילך.

כוונות נתמכות

  • Intent.ACTION_PICK_CONTACTS: ה-Intent המומלץ לאפליקציות שמיועדות ל-Android 17 ומעלה.
  • Intent.ACTION_PICK: נשמרת לצורך תאימות לאחור. המערכת מנתבת באופן אוטומטי את הבקשות האלה לכלי החדש לבחירת קבצים עבור סוגי MIME נתמכים (אימייל, טלפון או איש קשר).

ניהול סשנים

כדי לשמור על תקינות המכשיר ועל הפרטיות, ספק הסשן אוכף מדיניות קפדנית של ניקוי נתונים:

  • משימת ניקוי: משימה אוטומטית של המערכת (CleanupJobService) פועלת מעת לעת כדי להסיר נתוני סשן שהם בני יותר מ-24 שעות.
  • מגבלת שורות: כדי למנוע שימוש מוגזם בנפח האחסון, מספר השורות בטבלה של ספק הסשן מוגבל ל-5,000. אם הטבלה מגיעה לגודל הזה, המערכת מצמצמת אוטומטית את השורות הכי ישנות לפני שהיא מוסיפה נתוני סשן חדשים.
  • עקביות: נתוני הסשן הם זמניים. אפליקציות לקוח צריכות לשמור את נתוני אנשי הקשר שמוחזרים מיד עם קבלתם.

הרשאות

כדי לקבל הרשאת כתיבה לספק הסשן, נדרשת ההרשאה android.permission.MANAGE_CONTACTS_PICKER_SESSION, שמוגבלת לחבילת Android Contact Picker.

התאמה אישית ועמידה בדרישות

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

אימות

השותפים צריכים לאמת את ההטמעה שלהם באמצעות חבילת בדיקות התאימות (CTS) וחבילת הבדיקות של שירותי Google לנייד (GTS).