Giới thiệu
Bài viết này hướng dẫn chi tiết cách áp dụng InboxStyle để định dạng thông báo Android hiển thị danh sách các mục (như email, tin nhắn) trong khu vực mở rộng.
Triển khai chi tiết
Bước 1: Tạo project Android Studio
File → New Project → Chọn Empty Activity → Đặt tên package: app.tutorialspoint.com.notifyme
Bước 2: Layout chính (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<Button
android:id="@+id/btnCreateNotification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:text="Tạo thông báo InboxStyle" />
</RelativeLayout>
Bước 3: Code MainActivity (src/MainActivity.java)
package app.tutorialspoint.com.notifyme;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String NOTIFICATION_CHANNEL_ID = "10001";
private final static String default_notification_channel_id = "default";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void createNotification(View view) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this, default_notification_channel_id);
mBuilder.setContentTitle("Thông báo InboxStyle");
// CẤU HÌNH INBOXSTYLE CHI TIẾT
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.addLine("Mục 1: Thông tin quan trọng đầu tiên");
inboxStyle.addLine("Mục 2: Cập nhật trạng thái đơn hàng");
inboxStyle.addLine("Mục 3: Nhắc lịch họp nhóm");
inboxStyle.addLine("Mục 4: Mã OTP: 987654");
inboxStyle.addLine("Mục 5: Tin nhắn từ quản trị");
inboxStyle.setBigContentTitle("5 mục mới");
inboxStyle.setSummaryText("Hệ thống thông báo");
mBuilder.setStyle(inboxStyle);
mBuilder.setContentText("Bạn có 5 mục mới");
mBuilder.setTicker("Thông báo InboxStyle");
mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
mBuilder.setAutoCancel(true);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel notificationChannel = new NotificationChannel(
NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
assert mNotificationManager != null;
mNotificationManager.createNotificationChannel(notificationChannel);
}
assert mNotificationManager != null;
mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
}
}
Bước 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.notifyme">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Kết quả mong đợi
Khi chạy ứng dụng và tạo thông báo:
- Dạng thu gọn: Hiển thị tiêu đề "Thông báo InboxStyle" và nội dung "Bạn có 5 mục mới"
- Dạng mở rộng: Hiển thị tiêu đề lớn "5 mục mới", 5 dòng chi tiết, và dòng tóm tắt "Hệ thống thông báo"

Mẹo nâng cao
Để thêm icon cho từng dòng, sử dụng NotificationCompat.MessagingStyle (phù hợp cho chat) thay vì InboxStyle.