Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Tạo kiểu thông báo Android với InboxStyle

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"

Tạo kiểu thông báo Android với InboxStyle Tạo kiểu thông báo Android với InboxStyle

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.