NotificationManager.notify не работает должным образом - PullRequest
0 голосов
/ 04 января 2019

Приложение, которое я создаю, имеет возможность передачи файлов, и я показываю его ход в уведомлении с возможностью остановить передачу. Проблема заключается в том, что каждый раз, когда вызывается NotificationManager.notify (и он должен вызываться каждый раз, когда изменяется ход выполнения), воспроизводится звук системного уведомления (это приводит к большому количеству спама), и кнопка для остановки передачи становится непригодной для использования. .

Не обновляя индикатор выполнения, можно нажать кнопку «Остановить передачу». Еще одна вещь, которую я заметил, это то, что звуковой спам присутствует в Android 8.x, но не в 5.x.

Создание уведомления:

mBuilder = new NotificationCompat.Builder(cont, "default")
            .setSmallIcon(R.drawable.file)
            .setContentTitle("File transfer app")
            .setContentText((down ? "Downloading " : "Uploading ") + fileName)
            .setAutoCancel(false)
            .setProgress(100, 0, indeterminate);
    Intent notifyButton = new Intent();
    notifyButton.setAction("STOP_TRANSFER");
    notifyButton.putExtra("id", notifId);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(cont, notifId, notifyButton, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.addAction(R.drawable.close, "Stop transfer", pendingIntent);
    all.add(this);
    mNotificationManager.notify(notifId, mBuilder.build());

Обновление прогресса:

mBuilder.setProgress(this.max, progress, indeterminate);
mNotificationManager.notify(notifId, mBuilder.build());

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

Я что-то здесь не так делаю?

1 Ответ

0 голосов
/ 02 июля 2019

Вам может потребоваться вызвать mNotificationManager.cancel (), если ваше уведомление об обновлении постоянно, чтобы просто уведомлять о прогрессе.

if(update){
   mNotificationManager.cancel(notifId) 
 }
mNotificationManager.notify(notifId, mBuilder.build());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...