프로그래밍 방식으로 알림을 지울 수 있습니까?
나는 그것을 시도했지만 NotificationManager
작동하지 않습니다. 내가 할 수있는 다른 방법이 있습니까?
답변
알림을 취소하려면 다음 코드를 사용하십시오.
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
이 코드에는 항상 알림에 사용되는 동일한 ID가 있습니다. 취소해야하는 다른 알림이있는 경우 알림을 만드는 데 사용한 ID를 저장해야합니다.
답변
출처 : http://developer.android.com/guide/topics/ui/notifiers/notifications.html
사용자가 알림 창에서 선택할 때 상태 표시 줄 알림을 지우려면 알림 개체에 “FLAG_AUTO_CANCEL”플래그를 추가합니다. cancel (int)을 사용하여 수동으로 지우거나 알림 ID를 전달하거나 cancelAll ()을 사용하여 모든 알림을 지울 수도 있습니다.
하지만 Donal이 맞습니다. 생성 한 알림 만 지울 수 있습니다.
답변
아무도 이것에 대한 코드 답변을 게시하지 않았기 때문에 :
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. 이미 플래그가있는 경우 다음과 같이 OR FLAG_AUTO_CANCEL 할 수 있습니다.
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
답변
NotificationManager에 제공된 기본 방법을 시도하십시오 .
NotificationManager.cancelAll()
모든 알림을 제거합니다.
NotificationManager.cancel(notificationId)
특정 알림을 제거합니다.
답변
API 레벨 18 (Jellybean MR2)부터는 NotificationListenerService를 통해 자신이 아닌 다른 알림을 취소 할 수 있습니다.
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}
…
private void clearNotificationExample(StatusBarNotification sbn) {
myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
답변
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (true)
알림을 클릭하면 해당 활동을 열고 알림 표시 줄에서 알림을 제거합니다.
답변
다음을 사용하여 포 그라운드에서 시작된 서비스에서 알림을 생성하는 경우
startForeground(NOTIFICATION_ID, notificationBuilder.build());
그런 다음 발행
notificationManager.cancel(NOTIFICATION_ID);
알림이 취소되지 않고 알림이 상태 표시 줄에 계속 나타납니다. 이 특별한 경우에는 다음을 발행해야합니다.
stopForeground( true );
서비스 내에서 다시 백그라운드 모드로 전환하고 동시에 알림을 취소합니다. 또는 알림을 취소하지 않고 백그라운드로 푸시 한 다음 알림을 취소 할 수 있습니다.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);