Получение идентификатора отклоненного уведомления - PullRequest
0 голосов
/ 08 октября 2018

Мое приложение создает уведомление и элемент в базе данных с этим идентификатором.Когда пользователь отклоняет уведомление, я хочу получить этот идентификатор уведомления и использовать его для проведения исследования в Базе данных.У меня уже есть ожидающий Намерение, которое позволяет мне знать, когда уведомление отклонено.Приемник вещания:

 final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

           //Action to perform when notification is dismissed

            unregisterReceiver(this);
        }
    };

Код, который создает уведомление:

 Intent intent = new Intent("NOTIFICATION_DELETED");
            PendingIntent pendintIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
            registerReceiver(receiver, new IntentFilter("NOTIFICATION_DELETED"));


            notification = new Notification.Builder(this, channelId)
                    .setContentTitle(title)
                    .setContentText(text)
                    .setSmallIcon(R.drawable.icon_notification)
                    .setAutoCancel(true)
                    .setDeleteIntent(pendintIntent)
                    .build();

    notificationManager.notify(idUnico =(int)((new

        Date().

        getTime() /1000L)%Integer.MAX_VALUE),notification );

    reminder.setText("");
    titoloE.setText("");

        saveNotif();

        checkForConsent();

1 Ответ

0 голосов
/ 08 октября 2018

Вам нужно установить идентификатор уведомления, который вы используете, чтобы показать уведомление в намерении, переданном в ожидание намерения.

int notifiId = (int)((new Date().getTime() /1000L)%Integer.MAX_VALUE);

Intent intent = new Intent("NOTIFICATION_DELETED");
// set id to intent
intent.putExtra("NOTIFICATION_ID", notifiId);

PendingIntent pendintIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
registerReceiver(receiver, new IntentFilter("NOTIFICATION_DELETED"));

notification = new Notification.Builder(this, channelId)
                .setContentTitle(title)
                .setContentText(text)
                .setSmallIcon(R.drawable.icon_notification)
                .setAutoCancel(true)
                .setDeleteIntent(pendintIntent)
                .build();

notificationManager.notify(notifiId, notification);

Затем в приемнике вещания вы можете получить идентификатор

 final BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

       //Action to perform when notification is dismissed
       if (intent.hasExtra("NOTIFICATION_ID") {
           int id = intent.getIntExtra("NOTIFICATION_ID", -1);
           // Use Id
       }

        unregisterReceiver(this);
    }
};
...