Приложение, которое я создаю, имеет возможность передачи файлов, и я показываю его ход в уведомлении с возможностью остановить передачу.
Проблема заключается в том, что каждый раз, когда вызывается 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());
Я ожидал, что индикатор выполнения будет обновляться нормально, не издавая звука при каждом перемещении, и чтобы я мог отменить передачу в любое время.
Я что-то здесь не так делаю?