[android] Android에서 알림을 지우는 방법

프로그래밍 방식으로 알림을 지울 수 있습니까?

나는 그것을 시도했지만 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);