У меня странная проблема со звуком уведомлений, заданным пользователем. Приложение в основном содержит более 500 аудио (.mp3) файлов в папке raw. Пользовательский звуковой файл уведомлений содержит имя файла уведомлений и устанавливается следующим образом.
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Uri soundUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = getNotificationChannel(soundUri);
if (notificationChannel != null && notificationManager != null)
notificationManager.createNotificationChannel(notificationChannel);
else
Crashlytics.logException(new NullPointerException("Null value received: " + notificationChannel + " " + notificationManager + " in " + TAG));
}
private NotificationChannel getNotificationChannel(Uri soundUri) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build();
NotificationChannel notificationChannel = new NotificationChannel(
DAILY_WORD_FOREGROUND_CHANNEL_ID,
ReminderUtils.DAILY_WORD_REMINDER,
NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setSound(soundUri, attributes);
return notificationChannel;
} else
return null;
}
Проблема возникает случайным образом на разных устройствах. Он воспроизводит случайный файл в необработанной папке как сигнал обычного уведомления, и если приложение удаляется и переустанавливается, то эта проблема не наблюдается. Клиенты не имеют хорошего времени с этим. Может ли кто-нибудь помочь, пожалуйста? Я совершенно не в себе, чтобы думать о коренной причине здесь.