이 튜토리얼에서는 안드로이드 알림(Notification)에 액션 버튼을 추가하는 방법을 단계별로 살펴봅니다. 알림에 버튼을 추가하면 사용자가 앱을 열지 않고도 '다시 알림(Snooze)' 같은 빠른 작업을 바로 수행할 수 있어 사용자 경험이 크게 향상됩니다.
1단계 – 새 프로젝트 만들기
Android Studio를 실행하고 File ⇒ New Project 메뉴로 이동한 뒤, 필요한 모든 정보를 입력하여 새 프로젝트를 생성합니다.
2단계 – 레이아웃 파일 작성 (res/layout/activity_main.xml)
아래 코드를 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="Create Notification" />
</RelativeLayout>3단계 – 메인 액티비티 작성 (src/MainActivity.java)
알림에 버튼(액션)을 추가하는 핵심 로직입니다. PendingIntent를 생성해 버튼 클릭 시 동작을 정의하고, addAction() 메서드로 알림에 버튼을 연결합니다. 또한 안드로이드 8.0(API 26, 오레오) 이상에서는 반드시 알림 채널(Notification Channel)을 생성해야 한다는 점에 유의하세요.
package app.tutorialspoint.com.notifyme;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
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);
Button btnCreateNotification = findViewById(R.id.btnCreateNotification);
btnCreateNotification.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 버튼 클릭 시 실행될 인텐트 생성
Intent snoozeIntent = new Intent(MainActivity.this, MainActivity.class);
snoozeIntent.setAction("ACTION_SNOOZE");
snoozeIntent.putExtra("EXTRA_NOTIFICATION_ID", 0);
PendingIntent snoozePendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 0, snoozeIntent, 0);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(MainActivity.this,
default_notification_channel_id);
mBuilder.setContentTitle("My Notification");
mBuilder.setContentText("Notification Listener Service Example");
mBuilder.setTicker("Notification Listener Service Example");
mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
// 알림에 'Snooze' 버튼 추가
mBuilder.addAction(R.drawable.ic_launcher_foreground,
"Snooze", snoozePendingIntent);
mBuilder.setAutoCancel(true);
// 안드로이드 오레오(API 26) 이상에서는 알림 채널 필수
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());
}
});
}
}핵심 포인트: mBuilder.addAction() 메서드가 바로 알림에 버튼을 추가하는 부분입니다. 아이콘, 버튼 텍스트, 그리고 클릭 시 실행될 PendingIntent를 순서대로 전달합니다.
4단계 – 매니페스트 설정 (AndroidManifest.xml)
아래 코드를 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>앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 상단 툴바의 Run 아이콘을 클릭하세요. 실행할 기기 목록에서 본인의 모바일 기기를 선택하면, 기기에 앱의 기본 화면이 표시됩니다.

화면 중앙의 Create Notification 버튼을 누르면 아래와 같이 'Snooze' 버튼이 포함된 알림이 생성되는 것을 확인할 수 있습니다.
