Уведомление Android вибрирует с NotifiationChannel.enableVibration(false)
С API 26 (Android 8.0) нам нужно определить NotificationChannel для каждого уведомления. Каждый канал имеет свои собственные настройки сбоев (например, вибрация, свет, звук).
Проблема: Когда я отключаю вибрацию для этого канала и развертываю ее на телефоне Android 8.0 (обновление для системы безопасности, сентябрь 2017 г.) (Nexus 5X), уведомление в любом случае вызывает вибрацию и открывается автоматически (всплывающее окно), которое я не настроил и хочу отключить.
Я регистрирую NotificationChannel в моей основной деятельности:
// 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, чтобы избежать этого ложного поведения). Для случая, когда другие выпуски имеют аналогичную ошибку других телефонов, еще не получили последнее обновление, я пометил обходной путь ниже как принятый ответ.
1 ответ
Это похоже на работу:
runningchannel.setVibrationPattern(new long[]{0, 0, 0, 0,0, 0, 0, 0, 0});
Да странно