странная проблема с уведомлением о кастомном звуке - PullRequest
0 голосов
/ 07 октября 2019

У меня странная проблема со звуком уведомлений, заданным пользователем. Приложение в основном содержит более 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;
}

Проблема возникает случайным образом на разных устройствах. Он воспроизводит случайный файл в необработанной папке как сигнал обычного уведомления, и если приложение удаляется и переустанавливается, то эта проблема не наблюдается. Клиенты не имеют хорошего времени с этим. Может ли кто-нибудь помочь, пожалуйста? Я совершенно не в себе, чтобы думать о коренной причине здесь.

...