Android Studio - Рингтон уведомлений по умолчанию на канале уведомлений (Android 8.0 ++) - PullRequest
0 голосов
/ 16 февраля 2020

Я разрабатываю что-то похожее на приложение для напоминаний : после нажатия одной кнопки приложение ждет 1 час, а затем показывает уведомление. Это работает как шарм, за исключением одной вещи: я не могу сделать уведомление по умолчанию на новых телефонах Android (с 8.0)! На старых устройствах (от android 4 до 7) он просто отлично работает, но , когда дело доходит до телефонов Oreo, приложение не воспроизводит звук уведомления по умолчанию при получении уведомления . Очевидно, я написал некоторый код для создания канала уведомлений (это требуется для Oreo), и он работает, но я не могу написать несколько правильных строк для установки мелодии по умолчанию. Я не нашел никакой документации, и все потоки здесь устарели, потому что они были написаны до выпуска Oreo; другие потоки показывают, как установить пользовательский звук, но это не мой случай.

Я пытался написать какой-то случайный код, используя способ Uri , но я потерпел неудачу.

Это мой код канала уведомлений (JAVA):

    private void createNotificationChannel(){

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        CharSequence name = "AppChannel";
        String description = "Channel for my App";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationChannel channel = new NotificationChannel("notifyApp", name, importance);
        channel.setDescription(description);
        channel.setBypassDnd(true);
        channel.enableLights(true);
        channel.setLightColor(Color.YELLOW);
        channel.enableVibration(true);
        channel.setVibrationPattern(new long[] {100, 200, 300, 400, 500, 400, 300, 200, 400});
        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        channel.setShowBadge(true);

        if(soundUri != null){
            AudioAttributes audioAttributes = new AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .setUsage(AudioAttributes.USAGE_ALARM)
                    .build();
            channel.setSound(soundUri,audioAttributes);
        }

        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        assert notificationManager != null;
        notificationManager.createNotificationChannel(channel);
    }
}

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

...