С API 26 (Android 8.0) нам нужно определить NotificationChannel для каждого уведомления. Каждый канал имеет свои настройки сбоев (например, вибрация, свет, звук).
Проблема: когда я отключаю вибрацию для этого канала и развертываю ее на телефоне Android 8.0 (обновление безопасности, сентябрь 2017 г.) (Nexus 5X), уведомление все равно вызывает вибрацию и открывается автоматически (всплывающие), которые я не ставил и хочу отключить.
Я регистрирую NotificationChannel в своей MainActivity:
// Register NotificationChannels needed for API 26+ to display notification messages if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel runningChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID_RUNNING, getString(R.string.notification_channel_name_running), NotificationManager.IMPORTANCE_LOW); runningChannel.enableLights(false); runningChannel.enableVibration(false); mNotificationManager.createNotificationChannel(runningChannel); }
Я установил NotificationChannel для уведомления:
notification = new NotificationCompat.Builder(context) .setContentIntent(onClickPendingIntent) .setChannelId(NOTIFICATION_CHANNEL_ID_RUNNING) .setOngoing(true) .setWhen(System.currentTimeMillis()) .setAutoCancel(false) .build();
Обновление (обновление системы безопасности от 5 октября 2017 г.)
Теперь все работает, как и ожидалось, без обходного пути, поэтому я могу выбрать targetSDK 26 (раньше я использовал 25, чтобы избежать этого ложного поведения). В случае, когда в других выпусках есть аналогичная ошибка других телефонов, которые еще не получили новейшее обновление, я отметил обходной путь ниже как принятый ответ.