Уведомление Android с помощью StartForeground и NotificationManager.Notify ⇐ Android
-
Гость
Уведомление Android с помощью StartForeground и NotificationManager.Notify
Я запускаю приоритетную службу для мониторинга местоположения с помощью приведенного ниже кода.
string content = "Отслеживание началось. Вы можете изменить настройки отслеживания..."; Построитель NotificationCompat.Builder = новый NotificationCompat.Builder(это, NOTIFICATION_CHANNEL_ID) .SetDefaults((int)NotificationDefaults.All) .SetSmallIcon(Resource.Drawable.notification) .SetVibrate(new long[] { 100, 200, 300, 400, 500, 400, 300, 200, 400 }) .SetSound(ноль) .SetChannelId(NOTIFICATION_CHANNEL_ID) .SetPriority(NotificationCompat.PriorityDefault) .SetAutoCancel(истина) .SetContentTitle("Умный офис") .SetContentText(содержимое) .SetOngoing(ложь); StartForeground(NOTIFICATION_SERVICE_ID, builder.Build(), Android.Content.PM.ForegroundService.TypeLocation); Это уведомление не отключается при пролистывании или нажатии, поскольку это служба переднего плана и не имеет намерения, как я и хочу.
Затем, когда пользователь входит в регион, я создаю уведомление с помощью SetAutoCancel(true) и SetContentIntent(pendingIntent), как показано ниже.
var pendingIntent = PendingIntent.GetActivity(this, 0, Intent, PendingIntentFlags.UpdateCurrent); Notification.Builder NotificationBuilder = новый Notification.Builder(это, NOTIFICATION_CHANNEL_ID) .SetSmallIcon(Resource.Drawable.notification) .SetContentTitle("Умный офис") .SetContentText(сообщение) .SetAutoCancel(истина) .SetContentIntent(pendingIntent) .SetOngoing(ложь); вар NotificationManager = (NotificationManager) GetSystemService (NotificationService); NotificationManager.Notify(NOTIFICATION_SERVICE_ID, NotificationBuilder.Build()); Теперь я хочу, чтобы это уведомление исчезало, если провести пальцем по нему или щелкнуть по нему. При нажатии открывается правильное намерение, но уведомление само по себе не исчезает. В чем причина этого?
Примечание. Если я покажу это уведомление перед запуском службы переднего плана (т. е. перед StartForeground(NOTIFICATION_SERVICE_ID, builder.Build(), Android.Content.PM.ForegroundService.TypeLocation);), то я смогу смахнуть уведомление.< /п> Заранее спасибо.
Я запускаю приоритетную службу для мониторинга местоположения с помощью приведенного ниже кода.
string content = "Отслеживание началось. Вы можете изменить настройки отслеживания..."; Построитель NotificationCompat.Builder = новый NotificationCompat.Builder(это, NOTIFICATION_CHANNEL_ID) .SetDefaults((int)NotificationDefaults.All) .SetSmallIcon(Resource.Drawable.notification) .SetVibrate(new long[] { 100, 200, 300, 400, 500, 400, 300, 200, 400 }) .SetSound(ноль) .SetChannelId(NOTIFICATION_CHANNEL_ID) .SetPriority(NotificationCompat.PriorityDefault) .SetAutoCancel(истина) .SetContentTitle("Умный офис") .SetContentText(содержимое) .SetOngoing(ложь); StartForeground(NOTIFICATION_SERVICE_ID, builder.Build(), Android.Content.PM.ForegroundService.TypeLocation); Это уведомление не отключается при пролистывании или нажатии, поскольку это служба переднего плана и не имеет намерения, как я и хочу.
Затем, когда пользователь входит в регион, я создаю уведомление с помощью SetAutoCancel(true) и SetContentIntent(pendingIntent), как показано ниже.
var pendingIntent = PendingIntent.GetActivity(this, 0, Intent, PendingIntentFlags.UpdateCurrent); Notification.Builder NotificationBuilder = новый Notification.Builder(это, NOTIFICATION_CHANNEL_ID) .SetSmallIcon(Resource.Drawable.notification) .SetContentTitle("Умный офис") .SetContentText(сообщение) .SetAutoCancel(истина) .SetContentIntent(pendingIntent) .SetOngoing(ложь); вар NotificationManager = (NotificationManager) GetSystemService (NotificationService); NotificationManager.Notify(NOTIFICATION_SERVICE_ID, NotificationBuilder.Build()); Теперь я хочу, чтобы это уведомление исчезало, если провести пальцем по нему или щелкнуть по нему. При нажатии открывается правильное намерение, но уведомление само по себе не исчезает. В чем причина этого?
Примечание. Если я покажу это уведомление перед запуском службы переднего плана (т. е. перед StartForeground(NOTIFICATION_SERVICE_ID, builder.Build(), Android.Content.PM.ForegroundService.TypeLocation);), то я смогу смахнуть уведомление.< /п> Заранее спасибо.
Мобильная версия