응용 프로그램을 만들었고 Android 알림 표시 줄에 알림을 추가하는 이벤트가 있습니다. 이제 이벤트의 알림 표시 줄에서 해당 알림을 제거하는 방법에 대한 샘플이 필요합니까 ??
응용 프로그램을 만들었고 Android 알림 표시 줄에 알림을 추가하는 이벤트가 있습니다. 이제 이벤트의 알림 표시 줄에서 해당 알림을 제거하는 방법에 대한 샘플이 필요합니까 ??
답변:
이것은 매우 간단합니다. cancel
또는 cancelAll
NotificationManager에 전화해야합니다 . cancel 메소드의 매개 변수는 취소해야하는 알림의 ID입니다.
API를 참조하십시오 : http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
이 빠른 코드를 사용해보십시오
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
cancelAll
알림 관리자를 호출 하여 알림 ID에 대해 걱정할 필요도 없습니다.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
편집 : 나는 downvoted 그래서 어쩌면 이것이 응용 프로그램에서 알림을 제거하도록 지정해야합니다.
startForeground(NOTIFICATION_ID, mNotification);
다음 코드와 같이 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());`
이것은 도움이 될 것입니다 :
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
이 앱에서 만든 모든 알림을 제거해야합니다
전화로 알림을 작성하면
startForeground();
서비스 내에서 전화해야 할 수도 있습니다.
stopForeground(false);
먼저 알림을 취소하십시오.
당신이 발생하는 경우 서비스에서 알림을 에서 시작 전경 사용
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();
것이 나를 위해 해결되었습니다!
이것을 시도하십시오
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
NotificationManager를 사용하여 알림을 취소하십시오. 알림 ID 만 제공하면됩니다.
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
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);
Android API> = 23에서는 이와 같은 방식으로 알림 그룹을 제거 할 수 있습니다.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}