في نظام التشغيل 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 incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
مكالمة واردة
استخدِم طريقة forIncomingCall() لإنشاء إشعار بنمط مكالمة لمكالمة واردة.
// For demonstrative purposes only, should use a well-defined Intents. val contentIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val declineIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val hangupIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val answerIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) // Create a call style notification for an incoming call. val builderForIncomingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forIncomingCall(incomingCaller, declineIntent, answerIntent)) .addPerson(incomingCaller)
مكالمة جارية
استخدِم الطريقة forOngoingCall() لإنشاء إشعار بنمط المكالمات الجارية لمكالمة جارية.
// Create a call style notification for an ongoing call. val builderForOngoingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forOngoingCall(callerAtOtherEnd, hangupIntent)) .addPerson(caller)
فحص مكالمة
استخدِم الطريقة forScreeningCall() لإنشاء إشعار بنمط مكالمة من أجل فحص مكالمة.
// Create a call style notification for screening a call. val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(caller)
توفير التوافق مع المزيد من إصدارات Android
ربط إشعارات CallStyle في الإصدارات 30 أو الأقدم من واجهة برمجة التطبيقات بخدمة تعمل في المقدّمة من أجل منحها الترتيب العالي الذي تحصل عليه في مستوى واجهة برمجة التطبيقات 31 أو الأحدث. بالإضافة إلى ذلك، يمكن أن تحصل إشعارات CallStyle في الإصدار 30 من واجهة برمجة التطبيقات أو الإصدارات الأقدم على ترتيب مشابه من خلال وضع علامة على الإشعار باعتباره ملوّنًا باستخدام طريقة setColorized().
استخدِم واجهات برمجة التطبيقات Telecom APIs مع إشعارات CallStyle. لمزيد من المعلومات، يُرجى الاطّلاع على
نظرة عامة على إطار عمل الاتصالات.