【问题标题】:Remove the notification icon from the status bar从状态栏中删除通知图标
【发布时间】:2011-02-19 20:23:36
【问题描述】:

我正在状态栏中显示一个图标。现在我想在打开该内容时立即删除该图标,一段时间后如果我们收到任何警报,该图标将再次显示。我该怎么做?

【问题讨论】:

    标签: android


    【解决方案1】:

    使用 NotificationManager 取消通知。您只需要提供您的通知 ID。

    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);
    

    示例代码不完整。这取决于您创建通知的方式。 只需确保使用与创建通知时相同的 id 来取消通知即可。

    取消:

    mNotificationManager.cancel(MY_NOTIFICATION_ID);
    

    【讨论】:

      【解决方案2】:

      如果您想在用户点击通知后删除通知,请在创建通知之前设置通知标志FLAG_AUTO_CANCEL

      【讨论】:

        【解决方案3】:

        我使用了 Builder 模式,因此您可以从 setter setAutoCancel(true) 设置自动取消。看起来像这样:

            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());
        

        【讨论】:

          【解决方案4】:
          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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-07-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多