در اندروید 12.0 (سطح API 31) و جدیدتر، سیستم الگوی اعلان CallStyle
را برای تشخیص اعلانهای تماس از سایر انواع اعلانها ارائه میکند. از این الگو برای ایجاد اعلان تماس های ورودی یا جاری استفاده کنید. این الگو از اعلانهایی با فرمت بزرگ پشتیبانی میکند که شامل اطلاعات تماسگیرنده و اقدامات لازم مانند پاسخ دادن یا رد کردن تماسها است.
از آنجایی که تماسهای ورودی و جاری رویدادهایی با اولویت بالا هستند، این اعلانها اولویت اصلی را در سایه اعلان دریافت میکنند. این رتبهبندی همچنین سیستم را قادر میسازد تا این تماسهای اولویتدار را به دستگاههای دیگر ارسال کند.
الگوی اعلان CallStyle
شامل اقدامات لازم زیر است:
- برای تماس های دریافتی پاسخ دهید یا رد کنید .
- تماس را برای تماس های مداوم قطع کنید .
- برای غربالگری تماس پاسخ دهید یا قطع کنید .
اقدامات در این سبک به صورت دکمه ظاهر می شوند و سیستم به طور خودکار آیکون ها و متن مناسب را اضافه می کند. برچسب زدن دستی دکمه ها پشتیبانی نمی شود. برای اطلاعات بیشتر در مورد اصول طراحی اعلان ها، به اعلان ها مراجعه کنید.
اقدامات مورد نیاز به عنوان intent ارسال می شوند، مانند hangupIntent
و answerIntent
در بخش های زیر. هر یک از اینها اشاره ای به نشانه ای هستند که توسط سیستم نگهداری می شود. توکن یک شی سبک وزن است که می تواند بین برنامه ها و فرآیندهای مختلف منتقل شود. این سیستم مسئول مدیریت طول عمر توکن و اطمینان از قابل استفاده بودن PendingIntent
است حتی اگر برنامه ای که آن را ایجاد کرده دیگر اجرا نشود. وقتی به برنامه دیگری PendingIntent
می دهید، به آن اجازه می دهید تا عملیات مشخص شده را انجام دهد، مانند رد یا پاسخ. این مجوز اعطا می شود حتی اگر برنامه ای که قصد ایجاد کرده است در حال حاضر اجرا نشود. برای اطلاعات بیشتر، به مستندات مرجع PendingIntent
مراجعه کنید.
با شروع Android 14 (سطح API 34)، میتوانید اعلانهای تماس را طوری پیکربندی کنید که غیرقابل رد کردن باشد. برای انجام این کار، از اعلانهای CallStyle
با Notification.FLAG_ONGOING_EVENT
از طریق Notification.Builder#setOngoing(true)
استفاده کنید.
در زیر نمونه هایی از استفاده از روش های مختلف با اعلان CallStyle
آورده شده است.
کاتلین
// Create a new call, setting the user as the caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
جاوا
// Create a new call with the user as the caller. Person incomingCaller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
تماس ورودی
از متد forIncomingCall()
برای ایجاد اعلان سبک تماس برای تماس ورودی استفاده کنید.
کاتلین
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incomingCaller)
جاوا
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incomingCaller);
تماس در حال انجام
از متد forOngoingCall()
برای ایجاد اعلان سبک تماس برای تماس در حال انجام استفاده کنید.
کاتلین
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOngoingCall(caller, hangupIntent)) .addPerson(second_caller)
جاوا
// Create a call style notification for an ongoing call. Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOngoingCall(caller, hangupIntent)) .addPerson(second_caller);
یک تماس را غربال کنید
از متد forScreeningCall()
برای ایجاد اعلان سبک تماس برای غربال کردن تماس استفاده کنید.
کاتلین
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
جاوا
// Create a call style notification for screening a call. Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
سازگاری را با نسخههای Android بیشتری ارائه دهید
اعلانهای CallStyle
را در نسخههای API 30 یا قبلتر با یک سرویس پیشزمینه مرتبط کنید تا به آنها رتبه بالایی را که در سطح API 31 یا بالاتر داده میشود اختصاص دهید. علاوه بر این، اعلانهای CallStyle
در API نسخه 30 یا قبلتر میتوانند با علامتگذاری اعلان بهعنوان رنگی، با استفاده از روش setColorized()
به رتبهبندی مشابهی دست یابند.
از API های Telecom با اعلان های CallStyle
استفاده کنید. برای اطلاعات بیشتر، به نمای کلی چارچوب Telecom مراجعه کنید.