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 bilgilerini ve aramaları yanıtlama veya reddetme gibi gerekli işlemleri içeren büyük biçimli bildirimleri destekler.
Gelen ve devam eden aramalar yüksek öncelikli etkinlikler olduğundan bu bildirimler, bildirim gölgesinde en yüksek önceliğe sahiptir. Bu sıralama, sistemin öncelikli aramaları diğer cihazlara yönlendirmesine de olanak tanır.
CallStyle bildirim şablonu aşağıdaki gerekli işlemleri içerir:
- Gelen aramalar için Yanıtla veya Reddet.
- Devam eden aramalar için Telefonu kapat.
- Arama filtreleme için Yanıtla veya Kapat.
Bu stildeki işlemler düğme olarak görünür ve 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 başlıklı makaleyi inceleyin.
Gerekli işlemler, aşağıdaki bölümlerde hangupIntent ve answerIntent gibi intent'ler olarak iletilir. Bunların her biri, sistem tarafından tutulan bir jetona referanstır. Jeton, farklı uygulamalar ve işlemler arasında aktarılabilen hafif bir nesnedir. Sistem, jetonun kullanım ömrünü yönetmekten ve jetonu oluşturan uygulama artık çalışmıyor olsa bile PendingIntent öğesinin kullanılabilir olmasını sağlamaktan sorumludur. Başka bir uygulamaya PendingIntent verdiğinizde, reddetme veya yanıtlama gibi belirtilen işlemi gerçekleştirme izni vermiş olursunuz.
Bu izin, intent'i oluşturan uygulama çalışmıyor olsa bile verilir. Daha fazla bilgi için PendingIntent ile ilgili referans belgelerini inceleyin.
Android 14'ten (API düzeyi 34) itibaren, arama bildirimlerini kapatılamayacak şekilde yapılandırabilirsiniz. Bunun için Notification.Builder#setOngoing(true) üzerinden Notification.FLAG_ONGOING_EVENT ile CallStyle bildirimlerini kullanın.
Aşağıda, CallStyle bildirimiyle çeşitli yöntemlerin kullanımına dair örnekler verilmiştir.
// Create a new call, setting incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Gelen arama
Gelen aramalar 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 arama için arama 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
Arama tarama 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üyle uyumluluk sağlama
API düzeyi 31 veya sonraki sürümlerde verilen yüksek sıralamayı atamak için API düzeyi 30 veya önceki sürümlerdeki CallStyle bildirimlerini 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.