반응형
푸시를 받거나 기타 어떤 이벤트가 있을 때 노티바에 알림을 표시해 주는 경우가 많다.
기본적인 형태는 노티바에 제목과 내용 정도 표시해 주고
선택하면 미리 설정해 놓은 인텐트가 실행되는형태가 일반적이다.
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 |