Пользовательское уведомление RemoteView отклонить при проведении пальцем влево или вправо - PullRequest
0 голосов
/ 06 февраля 2020

Я использовал пользовательское уведомление аудиопроигрывателя с пользовательским макетом, например.

simpleContentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.custom_notification);
expandedView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.big_notification);

, создал уведомление

notification = new NotificationCompat.Builder(getApplicationContext())
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("KJV Bible")
            //.setOngoing(false)
            .setAutoCancel(true)
            .setDeleteIntent(createOnDismissedIntent(this))
            .setChannelId(CHANNEL_ID).build();

и добавил прослушиватель пользовательского представления

public void setListeners(RemoteViews view) {
    Intent previous = new Intent(NOTIFY_PREVIOUS);
    Intent delete = new Intent(NOTIFY_DELETE);
    Intent pause = new Intent(NOTIFY_PAUSE);
    Intent next = new Intent(NOTIFY_NEXT);
    Intent play = new Intent(NOTIFY_PLAY);

    mMyBroadcastReceiver = new NotificationBroadcast(controls);
    IntentFilter filterPrevious = new IntentFilter(NOTIFY_PREVIOUS);
    this.registerReceiver(mMyBroadcastReceiver, filterPrevious);

    IntentFilter filterDelete = new IntentFilter(NOTIFY_DELETE);
    this.registerReceiver(mMyBroadcastReceiver, filterDelete);

    IntentFilter filterPause = new IntentFilter(NOTIFY_PAUSE);
    this.registerReceiver(mMyBroadcastReceiver, filterPause);

    IntentFilter filterNext = new IntentFilter(NOTIFY_NEXT);
    this.registerReceiver(mMyBroadcastReceiver, filterNext);

    IntentFilter filterPlay = new IntentFilter(NOTIFY_PLAY);
    this.registerReceiver(mMyBroadcastReceiver, filterPlay);

    PendingIntent pPrevious = PendingIntent.getBroadcast(getApplicationContext(), 0, previous, PendingIntent.FLAG_UPDATE_CURRENT);
    view.setOnClickPendingIntent(R.id.btnPrevious, pPrevious);

    PendingIntent pDelete = PendingIntent.getBroadcast(getApplicationContext(), 0, delete, PendingIntent.FLAG_UPDATE_CURRENT);
    view.setOnClickPendingIntent(R.id.btnDelete, pDelete);

    PendingIntent pPause = PendingIntent.getBroadcast(getApplicationContext(), 0, pause, PendingIntent.FLAG_UPDATE_CURRENT);
    view.setOnClickPendingIntent(R.id.btnPause, pPause);

    PendingIntent pNext = PendingIntent.getBroadcast(getApplicationContext(), 0, next, PendingIntent.FLAG_UPDATE_CURRENT);
    view.setOnClickPendingIntent(R.id.btnNext, pNext);

    PendingIntent pPlay = PendingIntent.getBroadcast(getApplicationContext(), 0, play, PendingIntent.FLAG_UPDATE_CURRENT);
    view.setOnClickPendingIntent(R.id.btnPlay, pPlay);
}

Теперь, как я могу удалить или отклонить это уведомление, проведите пальцем влево или вправо, когда пауза идентификатора игрока не включена, когда игрок находится в режиме воспроизведения?

Я использовал setDeleteIntent (), но не работал как.

private PendingIntent createOnDismissedIntent(Context context) {
    Intent intent = new Intent(context, NotificationDismissedReceiver.class);
    intent.putExtra("notificationId", NOTIFICATION_ID);
    return PendingIntent.getBroadcast(context.getApplicationContext(), NOTIFICATION_ID, intent, 0);


    return PendingIntent.getBroadcast(this, 0, new Intent(NOTIFY_DELETE), PendingIntent.FLAG_UPDATE_CURRENT);
}

1 Ответ

0 голосов
/ 06 февраля 2020

Я думаю, вам следует использовать флаг PendingIntent.FLAG_CANCEL_CURRENT для отклонения уведомления в методе createOnDismissedIntent.

Обновленный метод ниже -

private PendingIntent createOnDismissedIntent(Context context) {
    Intent intent = new Intent(context, NotificationDismissedReceiver.class);
    intent.putExtra("notificationId", NOTIFICATION_ID);
    return PendingIntent.getBroadcast(context.getApplicationContext(), NOTIFICATION_ID, intent, 0);


    return PendingIntent.getBroadcast(this, 0, new Intent(NOTIFY_DELETE), PendingIntent.FLAG_CANCEL_CURRENT);
}
...