简体   繁体   English

从状态栏中删除通知图标

[英]Remove the notification icon from the status bar

I am displaying an icon in status bar.Now I want to remove that icon immediately when I open that content, after some time if we receive any alert, that icon will be displayed again. 我在状态栏中显示一个图标。现在我想在打开该内容时立即删除该图标,一段时间后如果我们收到任何提醒,该图标将再次显示。 How can I do this? 我怎样才能做到这一点?

Use the NotificationManager to cancel your notification. 使用NotificationManager取消通知。 You only need to provide your notification id. 您只需提供通知ID即可。

https://developer.android.com/reference/android/app/NotificationManager.html https://developer.android.com/reference/android/app/NotificationManager.html

private static final int MY_NOTIFICATION_ID= 1234;
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(MY_NOTIFICATION_ID, notification);

The example code is not complete. 示例代码不完整。 It depends on how your created your notification. 这取决于您创建通知的方式。 Just make sure you use the same id to cancel your notification as you used when you created your notification. 只需确保使用相同的ID取消您在创建通知时使用的通知。

To cancel: 取消:

mNotificationManager.cancel(MY_NOTIFICATION_ID);

如果要在用户单击时删除通知, 在创建通知之前设置通知标志FLAG_AUTO_CANCEL

I used the Builder patter so you can just set auto cancel from the setter setAutoCancel(true) . 我使用了Builder模式,因此您可以从setter setAutoCancel(true)设置自动取消。 That looks something like this: 看起来像这样:

    String title = "Requests"; 
    String msg = "New requests available.";
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_gcm_icon)
                    .setContentTitle(title)
                    .setAutoCancel(true)
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(msg))
                    .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
Intent resultIntent = new Intent(application, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultPendingIntent = PendingIntent.getActivity(application, 0, resultIntent, 0);
NotificationManager nmgr = (NotificationManager) application.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(application)
            .setSmallIcon(R.drawable.icon_battery)
            .setContentTitle(application.getString(R.string.app_name))
            .setContentText("your text")
            .setOnlyAlertOnce(false)
            .setAutoCancel(true)
            .setTicker("your ticker")
            .setDefaults(Notification.DEFAULT_SOUND  ) //| Notification.DEFAULT_VIBRATE
            .setContentIntent(resultPendingIntent)
            .setVisibility(VISIBILITY_SECRET)
            .setPriority(Notification.PRIORITY_MIN);

Notification mNotification = mBuilder.build();
//  mNotification.flags |= FLAG_NO_CLEAR;
nmgr.notify(0, mNotification);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM