반응형
푸시를 받거나 기타 어떤 이벤트가 있을 때 노티바에 알림을 표시해 주는 경우가 많다.
기본적인 형태는 노티바에 제목과 내용 정도 표시해 주고
선택하면 미리 설정해 놓은 인텐트가 실행되는형태가 일반적이다.
private void showNotification2() {
Intent activityIntent = new Intent(getActivity(), MainActivity.class);
PendingIntent activityPIntent = PendingIntent.getActivity(getActivity(), 0, activityIntent , 0);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getActivity())
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("title")
.setContentText("message")
.setSound(defaultSoundUri)
.setAutoCancel(true)
.setContentIntent(activityPIntent);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN){
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
}
NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, notificationBuilder.build());
}
요런 함수를 만들어서 호출해주면 기본적인 형태의 알림이 이루어진다.
중간에 PRIORITY_HIGH 를 설정해주면 아래와 같은 화면이 뜬다.
그런데 기본적인 모양 말고 버튼을 넣는 다든가 원하는 모양으로
커스터마이징을 하고 싶을 때가 있다.
그럴때는 RemoteView 를 만들어서 설정해 주면 된다.
private void showNotification() {
Intent writeIntent = new Intent(getActivity(), WriteMemoActivity.class);
Intent activityIntent = new Intent(getActivity(), MainActivity.class);
PendingIntent writePIntent = PendingIntent.getActivity(getActivity(), 0, writeIntent , 0);
PendingIntent activityPIntent = PendingIntent.getActivity(getActivity(), 0, activityIntent , 0);
RemoteViews rviews = new RemoteViews(getActivity().getPackageName(), R.layout.notibar);
rviews.setOnClickPendingIntent(R.id.search_btn,activityPIntent);
rviews.setOnClickPendingIntent(R.id.write_btn,writePIntent);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getActivity())
.setSmallIcon(R.drawable.ic_launcher)
.setAutoCancel(false)
.setOngoing(true)
.setContent(rviews);
NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(999, notificationBuilder.build());
}요런식으로 해주면 원하는 레이아웃을 노티바에 올릴수가 있다.
setOngoing(true) 는 클릭했다고 사라지는게 아닌 항상 유지하고 싶은 경우다.
반응형
'안드로이드' 카테고리의 다른 글
| 가위바위보 챔피언 출시 (1) | 2018.07.13 |
|---|---|
| [안드로이드] 빠른 메모 빠른 검색. 언제였더라 출시 (3) | 2017.03.01 |
| [안드로이드] 유용한 라이브러리 - 버터나이프 (Butter knife) (0) | 2017.02.02 |
| [안드로이드] 안드로이드 스튜디오 자동 임포트 (Android studio auto Import) (0) | 2017.02.01 |
| [안드로이드] ZXing을 이용하여 간단하게 바코드 이미지 생성하기 (0) | 2017.01.26 |