본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] NotificationCompat and its Builder

by 돼지왕 왕돼지 2013. 11. 21.
반응형


[android] NotificationCompat and its Builder




NotificationCompat.Builder.setSmallIcon( int resId );


setSmallIcon 이 지정되지 않으면 notification 은 등록이 아예 되지 않음.

Small Icon 은 status bar 에 뜨는 아이콘과 notification view 안의 우측에 표시됨.


만약 large icon 이 지정되지 않으면 notification view 안에 있는 icon 도 이녀석으로 지정됨.

만약 large icon 이 지정되어 있다면 content info 자리에 icon 이 같이 표시됨.




NotificationCompat.Builder.setLargeIcon( Bitmap bitmap );


Notification View 안에 있는 icon 이 지정됨.




NotificationCompat.Builder.setContentInfo( CharSequence text );

NotificationCompat.Builder.setContentText( CharSequence text );

NotificationCompat.Builder.setContentTitle( CharSequence text );

NotificationCompat.Builder.setNumber( int count );




NotificationCompat.Builder.setAutoCancel( boolean );


기본값은 false 로, notification 을 클릭했을 때 notification 이 사라지지 않는다.

클릭했을 때 사라지게 하려면 setAutoCancel 값을 true 로 주어야 한다.




NotificationCompat.Builder.setWhen( long );


Notification 의 시간 표시를 설정할 수 있다.




NotificationCompat.Builder.addAction(int resId, CharSequence title, PendingIntent pIntent);


Notification View 의 하단에 PendingIntent 를 실행하는 버튼들을 추가할 수 있다.

최대 3개까지 추가할 수 있으며, 이 녀석을 사용하기 위해서는


NotificationCompat.Builder.setPriority( int priority );


를 통해서 NotificationCompat.PRIORITY_HIGH 로 설정되어야 한다.


** 이 녀석은 Android 4.1 이상에서만 작동한다.








NotificationCompat.Builder.setFullScreenIntent(PendingIntent pIntent, boolean highPriority);


Notification 을 등록하면서 바로 pendingintent 를 실행시킨다.

정말 엄~청나게 중요한 일이 아니면 사용하지 않는 것이 추천된다.

예를 들면 전화받기라던지, 알람시계라든지 등의 경우를 제외하면 말이다.

만약 그 외의 상황에서 사용하고 싶다면 이 방법을 disable 할 수 있는 option 을 주는 것이 좋다.




NotificationCompat.Builder.setOngoing( boolean ongoing );


ongoing noti 는 notification panel 에서 상단으로 정렬된다.

ongoing noti 는 X close button 이 없다. 그래서 Clear all(지우기) button 에 영향을 받지 않는다.




NotificationCompat.Builder.setProgress( int max, int progress, boolean indeterminate );


Notification Bar 에 progress bar 를 띄운다.

Indeterminate 의 경우는 bar 의 형태를 띄긴 하지만, 정확한 progress 는 알 수 없다.




NotificationCompat.Builder.setSubText( CharSequence text );


세번째 줄에 표시되는 text.

이 녀석을 setProgress 와 함께 표시하면 안 된다. 같은 위치이기 때문.

framework 에 따라 지원하지 않을 수 있기에 사용하지 않는 것이 강추.




NotificationCompat.Builder.setTicker( CharSequence tickerText );


noti 를 띄울 때 status bar에 함께 표시되는 내용을 정의한다.




NotificationCompat.Builder.setUsesChronometer( boolean b );


noti 를 띄울 때 timestamp 가 아닌 stopwatch 를 띄워준다. (noti 를 띄워준 시점부터 얼마나 지났나가 보여진다.)




참고사항


GingerBread ( 갤럭시 S ) 의 경우 setContentIntent 를 해주지 않으면 noti 가 아예 안 뜬다.

setProgress 도 작동 안 한다.

결론적으로 framework 에서 지원하지 않는 경우가 있기 때문에 이럴 경우 기획을 바꾸던가 해야한다.








반응형

댓글