Я разрабатываю что-то похожее на приложение для напоминаний : после нажатия одной кнопки приложение ждет 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);
}
}
Моя проблема может быть легко решена, если кто-то владеет приложением, которое отправляет уведомления мог скопировать и вставить мне свой собственный код относительно канала уведомлений. Все, что мне нужно, это несколько стандартных строк кода канала уведомлений, которые устанавливают звук уведомления по умолчанию.