繁体   English   中英

进度通知未取消

[英]Progress Notification not being cancelled

当我按通知中的“取消”按钮时,通知仍保留在通知栏中,每当我按“取消”时,通知将关闭但仍显示在顶部栏中,而当我打开通知时,通知未正确删除。

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

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

}

知道为什么会这样吗?

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

暂无
暂无

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

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