في Android 12.0 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، يوفّر النظام نموذج إشعار
CallStyle لتمييز إشعارات المكالمات عن
الأنواع الأخرى من الإشعارات. استخدِم هذا النموذج لإنشاء إشعارات المكالمات الواردة أو الجارية. يتيح النموذج إشعارات بتنسيق كبير تتضمّن معلومات المتصل والإجراءات المطلوبة، مثل الردّ على المكالمات أو رفضها.
بما أنّ المكالمات الواردة والجارية هي أحداث ذات أولوية عالية، تحصل هذه الإشعارات على أولوية قصوى في مركز الإشعارات. يسمح هذا الترتيب أيضًا للنظام بإعادة توجيه هذه المكالمات ذات الأولوية إلى أجهزة أخرى.
يتضمّن نموذج إشعار CallStyle الإجراءات المطلوبة التالية:
- الردّ أو الرفض للمكالمات الواردة
- إنهاء المكالمة للمكالمات الجارية
- الردّ أو إنهاء المكالمة لفحص المكالمات
تظهر الإجراءات بهذا النمط على شكل أزرار، ويضيف النظام تلقائيًا الرموز والنصوص المناسبة. لا يتم دعم التصنيف اليدوي للأزرار. لمزيد من المعلومات حول مبادئ تصميم الإشعارات، يُرجى الاطّلاع على الإشعارات.
يتم تمرير الإجراءات المطلوبة على شكل أغراض، مثل hangupIntent وanswerIntent في الأقسام التالية. يشير كل من هذين الإجراءَين إلى رمز مميّز يحتفظ به النظام. الرمز المميّز هو عنصر بسيط يمكن تمريره بين تطبيقات وعمليات مختلفة. النظام مسؤول عن إدارة مدة بقاء الرمز المميّز وضمان إمكانية استخدام PendingIntent حتى إذا لم يكن التطبيق الذي أنشأه قيد التشغيل. عند منح تطبيق آخر PendingIntent، فإنّك تمنحه الإذن بتنفيذ العملية المحدّدة، مثل الرفض أو الردّ.
يتم منح هذا الإذن حتى إذا لم يكن التطبيق الذي أنشأ الغرض قيد التشغيل. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية لـ
PendingIntent.
بدءًا من Android 14 (مستوى واجهة برمجة التطبيقات 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()
مكالمة واردة
استخدِم طريقة 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)
مكالمة جارية
استخدِم طريقة 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)
فحص مكالمة
استخدِم طريقة 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)
توفير التوافق مع المزيد من إصدارات Android
اربط إشعارات CallStyle على إصدارات واجهة برمجة التطبيقات 30 أو الإصدارات الأقدم بخدمة تعمل في المقدّمة من أجل تعيينها الترتيب العالي الذي يتم منحها في مستوى واجهة برمجة التطبيقات 31 أو الإصدارات الأحدث. بالإضافة إلى ذلك، يمكن لإشعارات CallStyle على إصدار واجهة برمجة التطبيقات 30
أو الإصدارات الأقدم تحقيق ترتيب مماثل من خلال وضع علامة على الإشعار على أنّه
ملوّن باستخدام طريقة setColorized().
استخدِم واجهات برمجة تطبيقات Telecom مع إشعارات CallStyle. لمزيد من المعلومات، يُرجى الاطّلاع على
نظرة عامة على إطار عمل Telecom.