Очистить уведомления приложений в Android Studio - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение, которое отправляет уведомления, но когда пользователь покидает приложение, уведомление все еще там, в случае, если он не нажимает на него.Таким образом, когда пользователь выходит из системы или пользователь сеанса имеет значение «null», уведомления будут автоматически удалены.

Мой код:

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void enviarNotificacao(){
    Intent intent = new Intent(this, BottomNavigation.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.putExtra("totens", listaTotem);

    int id = (int) (Math.random()*1000);
    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
    builder.setTicker("Olá Marujo!!!");
    builder.setContentTitle("Capitão Cupom");
    builder.setContentText("Um novo tesouro próximo de você");
    builder.setSmallIcon(R.drawable.logo);
    builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.logo));
    builder.setContentIntent(pi);
    builder.setAutoCancel(true);

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(id, builder.build());

    Notification n = builder.build();
    n.vibrate = new long[]{150, 300, 150, 600};
    notificationManager.notify(R.drawable.logo, n);

    try {
        Uri som  = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone toque = RingtoneManager.getRingtone(this, som);
        toque.play();
    }catch (Exception e){

    }
    Sessao.instance.setSailor(sailor);
}

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Переопределите onPause () в Activity и поместите его внутрь:

NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
0 голосов
/ 10 декабря 2018

Когда выходит из приложения, назовите его

notificationManager.cancel(NOTIFICATION_ID);
0 голосов
/ 10 декабря 2018

NotificantionManager.cancel (id) отменяет уведомление с этим идентификатором.NoticiationManager.cancelAll () отменяет все уведомления из этого приложения.Определение окончания сеанса, очевидно, будет бизнес-логикой, которую вам нужно создать.Когда это произойдет, вызовите одну из 2 функций выше.

...