Я пытаюсь настроить оповещение, которое сохраняется в течение 30 секунд и вибрирует во время отображения. Однако при отмене или разрешении таймаута уведомления вибрация не останавливает вибрацию на некоторых устройствах.
Не работает на Pixel 3 под управлением Android 9.
Он работает с использованием OnePlus 6 под управлением Android 9 или Pixel под управлением Android 10 Beta.
Я пытался использовать тот же контекст для создания NotificationManagerCompat при запуске и отмене попытки.
Я попытался отменить все уведомления, связанные с моим приложением, а не только те, которые я на самом деле хочу отменить.
Я попытался запустить трансляцию и запустить приемник, который, в свою очередь, отменяет уведомление.
Я использую канал уведомлений:
AudioAttributes audioAttr =
new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
.build();
NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
if (notificationManager != null) {
NotificationChannel channel = new NotificationChannel("channelId",
"channelName",
NotificationManager.IMPORTANCE_HIGH);
channel.setDescription("Channel description");
channel.setVibrationPattern({0L, 2000L, 2000L});
channel.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE), audioAttr);
channel.enableVibration(true);
channel.setLockscreenVisibility(VISIBILITY_PUBLIC);
channel.setShowBadge(false);
notificationManager.createNotificationChannel(ch);
Это запущенное уведомление:
Notification incCall = new NotificationCompat.Builder(context,
"someChannelId").setSmallIcon(R.drawable.someDrawable)
.setContentText("Some text")
.setContentTitle("Some title")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setFullScreenIntent(intent, true)
.setTimeoutAfter(30 * 1000)
.build();
incCall.flags = Notification.FLAG_INSISTENT;
NotificationManagerCompat.from(context)
.notify(”some id”, incCall);
Вот как я пытаюсь отменить уведомление:
NotificationManagerCompat.from(context).cancel("someChannelId");
Я также пробовал:
NotificationManagerCompat.from(context).cancelAll();
Я ожидаю, что телефон должен перестать вибрировать, когда уведомление скрыто. Но вибрация продолжается, даже если уведомление скрыто при вызове отмены.