Một thông báo cơ bản thường bao gồm một tiêu đề, một dòng văn bản và các thao tác mà người dùng có thể thực hiện để phản hồi. Để cung cấp thêm thông tin, bạn có thể tạo các tệp thông báo có thể mở rộng bằng cách áp dụng một trong số nhiều mẫu thông báo dưới dạng được mô tả trong tài liệu này.
Để bắt đầu, hãy tạo một thông báo có tất cả nội dung cơ bản như mô tả trong
Tạo thông báo. Sau đó:
cuộc gọi
setStyle()
có đối tượng kiểu và cung cấp thông tin tương ứng với mỗi mẫu, như
như các ví dụ sau đây.
Thêm hình ảnh lớn
Để thêm hình ảnh vào thông báo, hãy chuyển một phiên bản của
NotificationCompat.BigPictureStyle
đến setStyle()
.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build();
Để hình ảnh chỉ xuất hiện dưới dạng hình thu nhỏ khi thông báo
đã thu gọn, như được minh hoạ trong hình sau, hãy gọi
setLargeIcon()
rồi truyền hình ảnh. Sau đó, gọi
BigPictureStyle.bigLargeIcon()
và truyền hàm null
để biểu tượng lớn biến mất khi thông báo được
đã mở rộng:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build();
Thêm một khối văn bản lớn
Đăng ký
NotificationCompat.BigTextStyle
để hiển thị văn bản trong vùng nội dung mở rộng của thông báo:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(new NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build();
Tạo thông báo kiểu hộp thư đến
Đăng ký
NotificationCompat.InboxStyle
vào một thông báo nếu bạn muốn thêm nhiều dòng tóm tắt ngắn, chẳng hạn như
từ email đến. Thao tác này cho phép bạn thêm nhiều đoạn nội dung
được cắt bớt thành một dòng thay vì một dòng văn bản liên tục
do NotificationCompat.BigTextStyle
cung cấp.
Để thêm một dòng mới, hãy gọi
addLine()
tối đa 6 lần, như trong ví dụ sau. Nếu bạn thêm nhiều hơn 6
chỉ hiển thị 6 dòng đầu tiên.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
Java
Notification notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build();
Kết quả sẽ có dạng như hình sau:
Hiện cuộc trò chuyện trong thông báo
Đăng ký
NotificationCompat.MessagingStyle
để hiển thị thông báo tuần tự giữa số lượng người bất kỳ. Điều này lý tưởng cho
vì nó cung cấp bố cục nhất quán cho mỗi thông điệp bằng cách
xử lý riêng tên người gửi và nội dung thư, đồng thời mỗi thư có thể được
nhiều dòng.
Để thêm một tin nhắn mới, hãy gọi
addMessage()
!
chuyển nội dung tin nhắn, thời gian nhận được và tên người gửi. Bạn cũng có thể
chuyển thông tin này dưới dạng
NotificationCompat.MessagingStyle.Message
như trong ví dụ sau:
Kotlin
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].getText(), messages[0].getTime(), messages[0].getSender()) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].getText(), messages[1].getTime(), messages[1].getSender()) val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle( NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build()
Java
NotificationCompat.MessagingStyle.Message message1 = new NotificationCompat.MessagingStyle.Message(messages[0].getText(), messages[0].getTime(), messages[0].getSender()); NotificationCompat.MessagingStyle.Message message2 = new NotificationCompat.MessagingStyle.Message(messages[1].getText(), messages[1].getTime(), messages[1].getSender()); Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build();
Khi sử dụng NotificationCompat.MessagingStyle
, mọi giá trị được cấp cho
setContentTitle()
và
setContentText()
sẽ bị bỏ qua.
Bạn có thể gọi
setConversationTitle()
để thêm tiêu đề xuất hiện phía trên cuộc trò chuyện. Đây có thể là
tên do người dùng tạo của nhóm hoặc, nếu không có tên cụ thể, danh sách
những người tham gia cuộc trò chuyện. Không đặt tiêu đề cuộc trò chuyện cho
trò chuyện trực tiếp, vì hệ thống sử dụng sự tồn tại của trường này làm gợi ý
rằng cuộc trò chuyện là một nhóm.
Kiểu này chỉ áp dụng trên các thiết bị chạy Android 7.0 (API cấp 24) trở lên.
Khi sử dụng thư viện về khả năng tương thích
(NotificationCompat
),
như đã trình bày trước đó, thông báo có MessagingStyle
sẽ giảm trở lại
tự động sang kiểu thông báo mở rộng được hỗ trợ.
Khi tạo một thông báo như thế này cho một cuộc trò chuyện, hãy thêm thông báo trực tiếp hành động trả lời.
Tạo thông báo bằng các chế độ điều khiển nội dung nghe nhìn
Đăng ký
MediaStyleNotificationHelper.MediaStyle
để hiển thị bộ điều khiển chế độ phát nội dung nghe nhìn và theo dõi thông tin.
Chỉ định
MediaSession
trong
hàm khởi tạo. Điều này cho phép Android hiển thị thông tin chính xác về
nội dung đa phương tiện.
Gọi điện
addAction()
tối đa năm lần để hiển thị tối đa năm nút biểu tượng. Gọi setLargeIcon()
tới
thiết lập ảnh bìa đĩa nhạc.
Không giống như các kiểu thông báo khác, MediaStyle
cũng cho phép bạn sửa đổi
chế độ xem nội dung có kích thước thu gọn bằng cách chỉ định ba nút hành động cũng xuất hiện
trong chế độ xem thu gọn. Để thực hiện việc này, hãy cung cấp chỉ mục nút hành động để
setShowActionsInCompactView()
.
Ví dụ sau đây cho thấy cách tạo một thông báo bằng các chế độ điều khiển nội dung nghe nhìn:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button \*/)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build();
Tài nguyên khác
Hãy xem các tài liệu tham khảo sau để biết thêm thông tin về MediaStyle
và
thông báo có thể mở rộng.