티스토리 뷰
상단 알림은 Notification 객체를 이용하여 띄울 수 있으며, 이 객체는 NotificationCompat.Builder 객체를 호출하여 참조할 수 있다.
간단하게 버튼을 클릭하면 상단에 알림을 띄우는 예제를 확인해보자.
◎MainActivity.java
package com.example.samplenoti;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.core.app.NotificationCompat;
public class MainActivity extends AppCompatActivity {
NotificationManager manager;
private static String CHANNEL_ID = "channel1";
private static String CHANNEL_NAME = "Channel1";
private static String CHANNEL_ID2 = "channel2";
private static String CHANNEL_NAME2 = "Channel2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showNoti1();
}
});
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showNoti2();
}
});
}
public void showNoti1() {
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 알림 채널 생성
manager.createNotificationChannel(new NotificationChannel(
CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT
));
builder = new NotificationCompat.Builder(this, CHANNEL_ID);
} else {
builder = new NotificationCompat.Builder(this);
}
builder.setContentTitle("간단 알림");
builder.setContentText("알림 메시지입니다.");
builder.setSmallIcon(android.R.drawable.ic_menu_view);
// build() 호출하여 Notification 객체 생성
Notification noti = builder.build();
manager.notify(1, noti);
}
public void showNoti2() {
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
manager.createNotificationChannel(new NotificationChannel(
CHANNEL_ID2, CHANNEL_NAME2, NotificationManager.IMPORTANCE_DEFAULT
));
builder = new NotificationCompat.Builder(this, CHANNEL_ID2);
} else {
builder = new NotificationCompat.Builder(this);
}
Intent intent = new Intent(this, MainActivity.class);
// 지정한 상황이 올 때까지 Activity를 보관하고 있는 pendingIntent 객체체
PendingIntent pendingIntent = PendingIntent.getActivity(this, 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentTitle("간단 알림");
builder.setContentText("알림 메시지입니다.");
builder.setSmallIcon(android.R.drawable.ic_menu_view);
builder.setAutoCancel(true);
// 빌더에 PendingIntent 객체 설정
builder.setContentIntent(pendingIntent);
Notification noti = builder.build();
manager.notify(2, noti);
}
}
반응형
'Mobile > Android' 카테고리의 다른 글
[Android] 센서 이해하기 (0) | 2022.04.30 |
---|---|
[Android] 알림 3: 푸시 서비스 사용하기 (0) | 2022.04.27 |
[Android] 알림 1: 소리와 진동 (0) | 2022.04.26 |
[Android] 위치 2: 현재 위치의 지도 표시하기 (0) | 2022.04.22 |
[Android] 위치 1: GPS로 단말 위치 확인하기 (0) | 2022.04.22 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- Promise
- 파니노구스토
- react-native
- redux
- javascript
- redux-thunk
- AsyncStorage
- Async
- 이탈리안 레스토랑
- 정보보안기사 #실기 #정리
- await
- react
- 맛집
- 인천 구월동 이탈리안 맛집
- 인천 구월동 맛집
- Total
- Today
- Yesterday