是否可以检查通知是否可见或已取消?

Asa*_*ssi 37 notifications android

我想更新通知数据,但我发现的唯一方法是启动一个具有相同Id的新数据.

问题是如果原件被取消,我不想再提出新的.有没有办法判断通知是否可见或取消?或者只有在通知存在时更新通知的方法?

Asa*_*ssi 32

这就是我解决它的方式:

    private boolean isNotificationVisible() {
    Intent notificationIntent = new Intent(context, MainActivity.class);
    PendingIntent test = PendingIntent.getActivity(context, MY_ID, notificationIntent, PendingIntent.FLAG_NO_CREATE);
    return test != null;
}
Run Code Online (Sandbox Code Playgroud)

这是我生成通知的方式:

    /**
 * Issues a notification to inform the user that server has sent a message.
 */
private void generateNotification(String text) {

    int icon = R.drawable.notifiaction_icon;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, text, when);
    String title = context.getString(R.string.app_name);
    Intent notificationIntent = new Intent(context, MainActivity.class);

    // set intent so it does not start a new activity
    //notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, MY_ID, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, text, intent);

    notification.flags |= Notification.FLAG_AUTO_CANCEL; //PendingIntent.FLAG_ONE_SHOT

    notificationManager.notify(MY_ID, notification);
}
Run Code Online (Sandbox Code Playgroud)

  • 不适合我.这对我来说总是如此. (9认同)
  • 刚刚在Android 7.1中对此进行了测试,并且`isNotificationVisible()`总是返回`false`. (3认同)

Say*_*emi 26

如果您正在使用,API >= 23可以使用此方法获取活动通知:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
StatusBarNotification[] notifications = mNotificationManager.getActiveNotifications();
for (StatusBarNotification notification : notifications) {
  if (notification.getId() == 100) {
    // Do something.
  }
}
Run Code Online (Sandbox Code Playgroud)