انتخابگر مخاطب اندروید (Android Contact Picker) یک رابط کاربری استاندارد و با حفظ حریم خصوصی ارائه میدهد که به کاربران امکان میدهد مخاطبین خاص خود را با برنامهها به اشتراک بگذارند. این ویژگی که در اندروید ۱۷ معرفی شده است، به عنوان جایگزینی بدون نیاز به مجوز برای مجوز گسترده READ_CONTACTS عمل میکند.
با استفاده از انتخابگر مخاطب، برنامهها میتوانند درخواست دسترسی به اطلاعات خاص مخاطبین، مانند شماره تلفن یا آدرس ایمیل، را داشته باشند. کاربر مخاطبینی را که میخواهد به اشتراک بگذارد انتخاب میکند و سیستم به برنامه اجازه میدهد تا به طور موقت فقط به آن جزئیات دسترسی داشته باشد.
معماری
انتخابگر تماس از دو جزء اصلی تشکیل شده است:
- اپلیکیشن رابط کاربری انتخابگر: این کامپوننت به عنوان رابط کاربری برای انتخاب مخاطبین عمل میکند.
- ارائه دهنده جلسه: این مؤلفه به عنوان سرویس backend عمل میکند و جلسه دسترسی موقت را مدیریت میکند.

شکل ۱. نمودار توالی
رابط کاربری انتخابگر
رابط کاربری Picker رابط کاربری را برای انتخاب مخاطب مدیریت میکند و مستقیماً از ارائهدهنده مخاطبین درخواست میکند تا نماها را بر اساس انواع دادههای درخواستی پر کند. نماهای پشتیبانی شده عبارتند از:
- فقط شماره تلفنها: رابط کاربری مخاطبین حاوی شماره تلفن را نمایش میدهد.
- فقط ایمیلها: رابط کاربری، مخاطبین حاوی آدرسهای ایمیل را نمایش میدهد.
- اطلاعات تماس سفارشی: رابط کاربری، مخاطبینی را نمایش میدهد که با فیلدهای داده درخواستی خاص مطابقت دارند.
علاوه بر این، رابط کاربری از ویژگیهای زیر پشتیبانی میکند:
- لیست مرتبشده بر اساس حروف الفبا: مخاطبین با حذف دادههای تکراری، بر اساس حروف الفبا مرتب شدهاند.
- آواتارهای مخاطبین: رابط کاربری، عکسها یا آواتارهای مخاطبین را نمایش میدهد.
- موارد دلخواه: یک دسته بندی موارد دلخواه در بالای لیست مخاطبین نمایش داده می شود.
- تعویض پروفایل: این ویژگی به کاربران امکان میدهد مخاطبین را از پروفایلهای کاربری مختلف (مثلاً پروفایل کاری در مقابل پروفایل خصوصی) انتخاب کنند.
- تک انتخابی و چند انتخابی: سیستم از هر دو حالت تک انتخابی و چند انتخابی پشتیبانی میکند (حد پیشفرض ۵۰ و حداکثر ۱۰۰ است).
- پیشنمایش انتخاب: کاربران میتوانند قبل از تأیید، پیشنمایشی از مخاطبین انتخابشده خود را مشاهده و مدیریت کنند.
- پیمایش سریع: این ویژگی امکان پیمایش سریع در لیست مخاطبین را فراهم میکند.
- جستجو: یک نوار جستجو برای یافتن مخاطبین خاص ارائه شده است.
- بنر حریم خصوصی و صفحه جزئیات حریم خصوصی: یک اطلاعیه اجباری به کاربران اطلاع میدهد که برنامه دقیقاً کدام فیلدهای داده (مثلاً شماره تلفن، ایمیل) را درخواست میکند.
ارائه دهنده جلسه
ارائهدهندهی جلسه ( packages/providers/ContactsProvider ) به عنوان یک واسطهی امن بین برنامهی کلاینت و ارائهدهندهی مخاطبین عمل میکند.
- نقش: فقط زمانی از ارائهدهندهی جلسه استفاده کنید که انتخابگر را با استفاده از
Intent.ACTION_PICK_CONTACTSراهاندازی میکنید. - مدیریت جلسه: وقتی کاربر مخاطبین را انتخاب میکند، رابط کاربری انتخابگر، دادههای انتخاب (که به UID کلاینت نگاشت شده است) را در ارائهدهنده جلسه مینویسد.
- دسترسی به دادهها: ارائهدهنده، آدرس اینترنتی
content://com.android.providers.contacts.picker.sessionsرا به انتخابکننده برمیگرداند. انتخابکننده قبل از بازگرداندن URI به برنامه کلاینت، پرچمهای خواندن مناسب را اعمال میکند. این URI دسترسی خواندن موقت و جزئی به فیلدهای داده خاص انتخاب شده توسط کاربر را بدون افشای تمام دادههای مخاطب اعطا میکند. - دسترسی ممتاز: امضای
android.permission.MANAGE_CONTACTS_PICKER_SESSIONو مجوزهای ممتاز، دسترسی نوشتن به ارائهدهندهی جلسه را محافظت میکنند و تضمین میکنند که فقط انتخابکنندهی سیستمِ مورد اعتماد میتواند جلسات را ایجاد کند.
ادغام
تولیدکنندگان سختافزار و شرکا باید Android Contact Picker را در نسخههای اندروید ۱۷ و بالاتر بگنجانند.
اهداف پشتیبانی شده
-
Intent.ACTION_PICK_CONTACTS: اینتنت پیشنهادی برای برنامههایی که اندروید ۱۷ و بالاتر را هدف قرار میدهند. -
Intent.ACTION_PICK: برای سازگاری با نسخههای قبلی حفظ شده است. سیستم بهطور خودکار این درخواستها را برای انواع MIME پشتیبانیشده (ایمیل، تلفن یا مخاطب) به انتخابگر جدید هدایت میکند.
مدیریت جلسه
برای حفظ سلامت و حریم خصوصی دستگاه، ارائهدهندهی جلسه یک سیاست سختگیرانهی پاکسازی دادهها را اعمال میکند:
- کار پاکسازی: یک کار سیستمی (
CleanupJobService) به صورت دورهای اجرا میشود تا دادههای جلسهای که قدیمیتر از ۲۴ ساعت هستند را حذف کند. - محدودیت ردیف: برای جلوگیری از استفاده بیش از حد از فضای ذخیرهسازی، جدول ارائهدهنده جلسه حداکثر به ۵۰۰۰ ردیف محدود میشود. اگر جدول به این اندازه برسد، سیستم قبل از وارد کردن دادههای جلسه جدید، به طور خودکار قدیمیترین ردیفها را حذف میکند.
- ماندگاری: دادههای Session گذرا هستند. انتظار میرود برنامههای کلاینت بلافاصله پس از دریافت، دادههای مخاطب بازگردانده شده را ماندگار کنند.
مجوزها
دسترسی نوشتن در ارائهدهندهی جلسه (session provider) نیاز به مجوز android.permission.MANAGE_CONTACTS_PICKER_SESSION دارد که محدود به پکیج Android Contact Picker است.
سفارشیسازی و انطباق
شرکا میتوانند عناصر بصری مانند فونتها و رنگها را سفارشی کنند، اما پیادهسازیها باید مطابق با بخش ۳.۱۸.۲ (TBD) از قوانین توسعهدهندگان اندروید (Android CDD) باشند.
اعتبارسنجی
شرکا باید پیادهسازی خود را با استفاده از مجموعه تست سازگاری (CTS) و مجموعه تست سرویسهای موبایل گوگل (GTS) تأیید کنند.