Android : 알림 표시 줄에서 알림 제거


답변:


182

이것은 매우 간단합니다. cancel또는 cancelAllNotificationManager에 전화해야합니다 . cancel 메소드의 매개 변수는 취소해야하는 알림의 ID입니다.

API를 참조하십시오 : http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)


감사 Roflcoptr :) 나는 여기에서 발견 : stackoverflow.com/questions/2839727/…
Nezir

3
개인 정적 최종 int MY_NOTIFICATION_ID = 1234; 문자열 ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager; mNotificationManager = (NotificationManager) getSystemService (ns); mNotificationManager.notify (MY_NOTIFICATION_ID, 알림); 예제 코드가 완료되지 않았습니다. 알림 생성 방법에 따라 다릅니다. 알림을 만들 때 사용한 것과 동일한 ID를 사용하여 알림을 취소해야합니다. 취소하려면 : mNotificationManager.cancel (MY_NOTIFICATION_ID);
Nezir

어려운 문제에 대한 복잡한 답변은 아니지만 어려운 날에 우리를 많이 도와줍니다. 대단히 감사합니다.
e-info128

public void delNoti (int id) {((NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE)). cancel (id);}
phnghue

1
시스템에 의해 생성 된 알림은 어떻습니까?
Zaid Mirza

219

이 빠른 코드를 사용해보십시오

public static void cancelNotification(Context ctx, int notifyId) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
    nMgr.cancel(notifyId);
}

19
간단하고 정확하며 요점에 직접 도달하기 때문에 정답이어야합니다.
ZeroTek

1
안녕하세요. 정답입니다. 그러나 알림 트레이는 계속 표시됩니다. 그것을 숨길 방법이 있습니까? 예를 들어 알림과 관련된 두 가지 작업이 있습니다. 취소 및 완료. 이러한 조치 중 하나가 수행되면 알림을 제거합니다. 그러나 이렇게하면 알림 만 제거되지만 알림 트레이는 계속 표시됩니다.
Shajeel Afzal

1
1 행, 통지 ID를 호출하십시오. public void delNoti (int id) {((NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE)). cancel (id);}
phnghue

당신은 CTX가 필요하지 않습니다. NotificationManager nMgr = (알림 관리자) getSystemService (Context.NOTIFICATION_SERVICE);
canbax

61

cancelAll알림 관리자를 호출 하여 알림 ID에 대해 걱정할 필요도 없습니다.

NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();

편집 : 나는 downvoted 그래서 어쩌면 이것이 응용 프로그램에서 알림을 제거하도록 지정해야합니다.


포 그라운드에 대한 알림 관리자가 없습니다 :startForeground(NOTIFICATION_ID, mNotification);
user924

12

다음 코드와 같이 setAutoCancel (True)을 설정하기 만하면됩니다.

Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);

PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                GameLevelsActivity.this,
                0,
                resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT
                );

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        getApplicationContext()).setSmallIcon(R.drawable.icon)
        .setContentTitle(adv_title)
        .setContentText(adv_desc)
        .setContentIntent(resultPendingIntent)
         //HERE IS WHAT YOY NEED:
        .setAutoCancel(true);

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`

3
알림을 직접 탭한 경우에만 작동합니다. 작업을 두드리면 (예 : pl.vc/1gvrli ) 알림이 제거되지 않습니다.
baris1892

이것은 요청 된 것이 아닙니다. 질문 : "이벤트의 알림 표시 줄에서 해당 알림을 제거하는 방법에 대한 샘플이 필요합니까 ??"
David

12

이것은 도움이 될 것입니다 :

NotificationManager mNotificationManager = (NotificationManager)
            getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();

이 앱에서 만든 모든 알림을 제거해야합니다

전화로 알림을 작성하면

startForeground();

서비스 내에서 전화해야 할 수도 있습니다.

stopForeground(false);

먼저 알림을 취소하십시오.


가능하다면이 질문에 대답 할 수 있습니까? 나는 당신이 제안한 것과 동일하지만 Android 10에서 나를 위해 작동하지 않습니다. 질문을 보시려면 여기를 클릭하십시오
Maulik Dodia

7

당신이 발생하는 경우 서비스에서 알림을 에서 시작 전경 사용

startForeground(NOTIFICATION_ID, notificationBuilder.build());

그런 다음 발행

notificationManager.cancel(NOTIFICATION_ID);

작동하지 않습니다. 알림 및 알림을 취소해도 여전히 상태 표시 줄에 나타납니다. 이 특별한 경우 두 가지 방법으로 문제를 해결합니다.

1> 서비스 내부에서 stopForeground (false) 사용 :

stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);

2> 호출 활동으로 해당 서비스 클래스를 삭제하십시오.

Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
    ServiceCallingActivity.activity.finish();
}
context.stopService(i);

두 번째 방법은 음악 플레이어 알림을 더 선호합니다 .


답변 주셔서 감사합니다! 사용하는 stopForeground(true); manager.cancelAll();것이 나를 위해 해결되었습니다!
chenshuiluke

3

이것을 시도하십시오

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}

가능하다면이 질문에 대답 할 수 있습니까? 나는 당신이 제안한 것과 동일하지만 Android 10에서 나를 위해 작동하지 않습니다. 질문을 보시려면 여기를 클릭하십시오
Maulik Dodia


2

NotificationManager.cancel(id)정답입니다. 그러나 Android Oreo 에서 제거 할 수 있습니다 전체 알림 채널을 삭제하여 이상 알림 . 삭제 된 채널의 모든 메시지가 삭제됩니다.

다음은 Android 설명서 의 예입니다 .

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);

1

Android API> = 23에서는 이와 같은 방식으로 알림 그룹을 제거 할 수 있습니다.

  for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
        if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
            mNotificationManager.cancel(statusBarNotification.getId());
        }
    }

0

ID로 전화하십시오.

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.