Trên Android 12.0 (API cấp 31) trở lên, hệ thống cung cấp
Mẫu thông báo CallStyle
để phân biệt thông báo cuộc gọi
các loại thông báo khác. Sử dụng mẫu này để tạo cuộc gọi đến hoặc
thông báo cuộc gọi đang diễn ra. Mẫu này hỗ trợ thông báo có định dạng lớn
bao gồm thông tin người gọi và hành động cần thiết như trả lời hoặc
từ chối cuộc gọi.
Vì cuộc gọi đến và đang diễn ra đều là sự kiện có mức độ ưu tiên cao nên những thông báo này nhận được mức độ ưu tiên hàng đầu trong ngăn thông báo. Thứ hạng này cũng cho phép để chuyển tiếp các cuộc gọi được ưu tiên này đến các thiết bị khác.
Mẫu thông báo CallStyle
bao gồm những hành động bắt buộc sau:
- Trả lời hoặc Từ chối đối với cuộc gọi đến.
- Kết thúc để thực hiện các cuộc gọi đang diễn ra.
- Trả lời hoặc Kết thúc để sàng lọc cuộc gọi.
Các thao tác trong kiểu này xuất hiện dưới dạng nút và hệ thống sẽ tự động thêm biểu tượng và văn bản thích hợp. Không hỗ trợ gắn nhãn thủ công cho các nút. Để biết thêm thông tin về các nguyên tắc thiết kế thông báo, hãy xem Thông báo.
Các hành động bắt buộc được chuyển dưới dạng ý định, chẳng hạn như hangupIntent
và
answerIntent
trong các phần sau. Mỗi nhóm trong số này là các tham chiếu đến
mã thông báo do hệ thống duy trì. Mã thông báo là một đối tượng nhẹ
có thể được truyền giữa các ứng dụng và quy trình. Hệ thống này
chịu trách nhiệm quản lý vòng đời của mã thông báo và đảm bảo rằng
PendingIntent
vẫn dùng được ngay cả khi ứng dụng tạo ra thuộc tính này không còn dùng được nữa
đang chạy. Khi bạn cấp PendingIntent
cho một ứng dụng khác, bạn đang cấp
quyền thực hiện thao tác được chỉ định, chẳng hạn như từ chối hoặc trả lời.
Quyền này được cấp ngay cả khi ứng dụng tạo ý định
hiện không chạy. Để biết thêm thông tin, hãy xem tài liệu tham khảo
trong PendingIntent
.
Kể từ Android 14 (API cấp 34), bạn có thể định cấu hình thông báo cuộc gọi
không đóng được. Để thực hiện việc này, hãy sử dụng thông báo CallStyle
bằng
Notification.FLAG_ONGOING_EVENT
đến
Notification.Builder#setOngoing(true)
.
Sau đây là ví dụ về cách sử dụng các phương thức khác nhau với CallStyle
.
Kotlin
// Create a new call, setting the user as the caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as the caller. Person incomingCaller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Cuộc gọi đến
Sử dụng phương thức forIncomingCall()
để tạo thông báo kiểu cuộc gọi cho
cuộc gọi đến.
Kotlin
// 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)
Java
// 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);
Cuộc gọi đang diễn ra
Sử dụng phương thức forOngoingCall()
để tạo thông báo kiểu cuộc gọi cho
cuộc gọi đang diễn ra.
Kotlin
// 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)
Java
// 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);
Sàng lọc cuộc gọi
Sử dụng phương thức forScreeningCall()
để tạo một thông báo kiểu cuộc gọi
đang sàng lọc một cuộc gọi.
Kotlin
// 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)
Java
// 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);
Cung cấp khả năng tương thích trên nhiều phiên bản Android hơn
Liên kết thông báo CallStyle
trên API phiên bản 30 trở xuống với
dịch vụ trên nền trước để chỉ định thứ hạng cao cho chúng trong API
cấp 31 trở lên. Ngoài ra, thông báo của CallStyle
trên API phiên bản 30
hoặc thấp hơn có thể đạt được thứ hạng tương tự bằng cách đánh dấu thông báo là
được tô màu bằng phương thức setColorized()
.
Sử dụng Telecom API (API Viễn thông) với thông báo CallStyle
. Để biết thêm thông tin, hãy xem
Tổng quan về khung viễn thông.