Android 12.0 (API düzeyi 31) ve sonraki sürümlerde sistem, arama bildirimlerini diğer bildirim türlerinden ayırt etmek için CallStyle bildirim şablonunu sağlar. Gelen veya devam eden arama bildirimleri oluşturmak için bu şablonu kullanın. Şablon, arayan bilgileri ve aramaları yanıtlama veya reddetme gibi gerekli işlemleri içeren büyük formatlı bildirimleri destekler.
Gelen ve devam eden aramalar yüksek öncelikli etkinlikler olduğundan bu bildirimler, bildirim gölgesinde en yüksek önceliği alır. Bu sıralama, sistemin öncelikli aramaları diğer cihazlara yönlendirmesini de sağlar.
CallStyle bildirim şablonu aşağıdaki zorunlu işlemleri içerir:
- Gelen aramalar için Yanıtla veya Reddet'e dokunun.
- Devam eden aramalar için aramayı sonlandırın.
- Arama filtreleme için Yanıtla veya Kapat'a dokunun.
Bu stildeki işlemler düğme olarak görünür. Sistem, uygun simgeleri ve metni otomatik olarak ekler. Düğmelerin manuel olarak etiketlenmesi desteklenmez. Bildirim tasarım ilkeleri hakkında daha fazla bilgi için Bildirimler konusuna bakın.
Gerekli işlemler, sonraki bölümlerde hangupIntent ve answerIntent gibi amaçlar olarak iletilir. Bunların her biri, sistem tarafından tutulan bir jetona referanstır. Jeton, farklı uygulamalar ve işlemler arasında aktarılabilen basit bir nesnedir. Sistem, jetonun kullanım ömrünü yönetmekten ve jetonu oluşturan uygulama artık çalışmıyor olsa bile PendingIntent'nın kullanılabilir olmasını sağlamaktan sorumludur. Başka bir uygulamaya PendingIntent verdiğinizde, belirtilen işlemi (ör. reddetme veya yanıtlama) gerçekleştirmesine izin vermiş olursunuz.
Bu izin, amacı oluşturan uygulama çalışmıyor olsa bile verilir. Daha fazla bilgi için PendingIntent ile ilgili referans belgelerine bakın.
Android 14 (API düzeyi 34) sürümünden itibaren, arama bildirimlerini kapatılamayacak şekilde yapılandırabilirsiniz. Bunu yapmak için Notification.FLAG_ONGOING_EVENT ile Notification.Builder#setOngoing(true) arasındaki CallStyle bildirimlerini kullanın.
Aşağıda, CallStyle bildirimiyle çeşitli yöntemlerin kullanımına ilişkin örnekler verilmiştir.
// Create a new call, setting incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Gelen arama
Gelen arama için arama stili bildirimi oluşturmak üzere forIncomingCall() yöntemini kullanın.
// 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)
Devam eden arama
Devam eden bir görüşme için görüşme stili bildirimi oluşturmak üzere forOngoingCall() yöntemini kullanın.
// 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)
Aramaları filtreleme
Bir aramayı filtrelemek için arama stili bildirimi oluşturmak üzere forScreeningCall() yöntemini kullanın.
// 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)
Daha fazla Android sürümünde uyumluluk sağlama
API sürümü 30 veya önceki sürümlerdeki CallStyle bildirimlerini, API düzeyi 31 veya sonraki sürümlerde verilen yüksek sıralamayı atamak için bir ön plan hizmetiyle ilişkilendirin. Ayrıca, API sürümü 30 veya önceki sürümlerdeki CallStyle bildirimleri, setColorized() yöntemini kullanarak bildirimi renklendirilmiş olarak işaretleyerek benzer bir sıralama elde edebilir.
CallStyle bildirimleriyle Telecom API'lerini kullanın. Daha fazla bilgi için Telekom çerçevesine genel bakış başlıklı makaleyi inceleyin.