【问题标题】:Progress Notification not being cancelled进度通知未取消
【发布时间】:2017-05-21 10:49:50
【问题描述】:

当我在通知中按“取消”按钮时,通知仍保留在通知栏中,每次按“取消”时通知关闭但仍显示在顶部栏中,当我打开通知时仍然存在,通知没有被正确删除。

这是创建进度通知的代码,它工作正常:

private void createProgressNotification() {

    PendingIntent dismissIntent = NotificationActivity.getDismissIntent(NOTIFICATION_PROGRESS, Analyse.this);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
                    .setContentTitle("URL Analysis")
                    .setContentText("Analysis in progress")
                    .setSmallIcon(R.drawable.icon_notification)
                    .setAutoCancel(false)
                    .addAction(R.drawable.cancel, "Cancel", dismissIntent)
                    .setOngoing(true)
                    .setProgress(0, 0, true);

    NotificationManager mNotifyManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotifyManager.notify(NOTIFICATION_PROGRESS, mBuilder.build());
}

这是我必须处理dismissIntent的自定义NotificationActivity类:

public class NotificationActivity extends Activity {

    public static final String NOTIFICATION_ID = "NOTIFICATION_ID";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(getIntent().getIntExtra(NOTIFICATION_ID, -1));
        finish(); // since finish() is called in onCreate(), onDestroy() will be called immediately
    }

    public static PendingIntent getDismissIntent(int notificationId, Context context, AsyncCallWS analyze) {
        Intent intent = new Intent(context, NotificationActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.putExtra(NOTIFICATION_ID, notificationId);
        PendingIntent dismissIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

        return dismissIntent;
    }

}

知道为什么会发生这种情况吗?

【问题讨论】:

    标签: java android notifications


    【解决方案1】:

    在 NotificationCompat Builder 属性的 setAutoCancel() 中将 false 更改为 true

      mBuilder.setAutoCancel(true);
    

    原来如此

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
                    .setContentTitle("URL Analysis")
                    .setContentText("Analysis in progress")
                    .setSmallIcon(R.drawable.icon_notification)
                    .setAutoCancel(true)
                    .addAction(R.drawable.cancel, "Cancel", dismissIntent)
                    .setOngoing(true)
                    .setProgress(0, 0, true);
    

    【讨论】:

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