void BuildWearableOnlyNotification (string title, string content, bool withDismissal) { var builder = new Notification.Builder (this) .SetSmallIcon (Resource.Drawable.ic_launcher) .SetContentTitle (title) .SetContentText (content); if (withDismissal) { var dismissIntent = new Intent (Constants.ActionDismiss); dismissIntent.PutExtra (Constants.KeyNotificationId, Constants.BothId); PendingIntent pendingIntent = PendingIntent.GetService (this, 0, dismissIntent, PendingIntentFlags.UpdateCurrent); builder.SetDeleteIntent (pendingIntent); } ((NotificationManager)GetSystemService (NotificationService)).Notify (Constants.WatchOnlyId, builder.Build ()); }
void BuildWearableOnlyNotification(string title, string content, bool withDismissal) { var builder = new Notification.Builder(this) .SetSmallIcon(Resource.Drawable.ic_launcher) .SetContentTitle(title) .SetContentText(content); if (withDismissal) { var dismissIntent = new Intent(Constants.ActionDismiss); dismissIntent.PutExtra(Constants.KeyNotificationId, Constants.BothId); PendingIntent pendingIntent = PendingIntent.GetService(this, 0, dismissIntent, PendingIntentFlags.UpdateCurrent); builder.SetDeleteIntent(pendingIntent); } ((NotificationManager)GetSystemService(NotificationService)).Notify(Constants.WatchOnlyId, builder.Build()); }
public static void Notify(LocalNotification notification) { var builder = new Notification.Builder(Application.Context); builder.SetContentTitle(notification.Title); builder.SetContentText(notification.Body); builder.SetAutoCancel(true); builder.SetPriority((int)NotificationPriority.Max); builder.SetSmallIcon(notification.IconId); // Tapping on the notification var defaultAction = notification.Actions.FirstOrDefault(a => a.ActionId == ActionIdentifiers.Default); builder.SetContentIntent(CreateActivityPendingIntent(notification.Id, defaultAction)); // Dismissing a notification (swiping the notification) var dismissAction = notification.Actions.FirstOrDefault(a => a.ActionId == ActionIdentifiers.Dismiss); if (dismissAction != null) { builder.SetDeleteIntent(CreatePendingIntent(notification.Id, dismissAction)); } // User actions var actions = notification.Actions.Where(a => a.ActionId == ActionIdentifiers.Action).ToArray(); if (actions.Any()) { builder.SetActions(GetNotificationActions(notification, actions).ToArray()); } if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { var channelId = $"{Application.Context.PackageName}.general"; var channel = new NotificationChannel(channelId, "General", NotificationImportance.Max); _manager.CreateNotificationChannel(channel); builder.SetChannelId(channelId); } _manager.Notify(notification.Id, builder.Build()); }
private void CreateBuilder(IMediaItem mediaItem) { var builder = new Notification.Builder(Application.Context, channelId); builder.SetChannelId(channelId); //Configure builder builder.SetContentTitle(mediaItem.Title); builder.SetContentText(mediaItem.Artist); builder.SetWhen(0); if (AndroidAudioPlayer.SharedInstance.IsPlaying) { builder.SetOngoing(true); builder.SetSmallIcon(Android.Resource.Drawable.IcMediaPlay); } else { builder.SetOngoing(false); Intent dismissIntent = new Intent(ButtonEvents.AudioControlsDestroy); PendingIntent dismissPendingIntent = PendingIntent.GetBroadcast(Application.Context, 1, dismissIntent, 0); builder.SetDeleteIntent(dismissPendingIntent); builder.SetSmallIcon(Android.Resource.Drawable.IcMediaPause); } //If 5.0 >= set the controls to be visible on lockscreen if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { builder.SetVisibility(NotificationVisibility.Public); } if (!string.IsNullOrWhiteSpace(mediaItem.AlbumArtUrl)) { try { var bitmap = new AsyncImageDownloader().Execute(new string[] { mediaItem.AlbumArtUrl }); builder.SetLargeIcon(bitmap.GetResult()); } catch (Java.Lang.Exception exc) { Console.WriteLine($"Unable to find Album Art URL for {mediaItem.AlbumArtUrl}"); Console.WriteLine(exc.ToString()); } } Intent resultIntent = new Intent(Application.Context, typeof(Activity)); resultIntent.SetAction(Intent.ActionMain); resultIntent.AddCategory(Intent.CategoryLauncher); PendingIntent resultPendingIntent = PendingIntent.GetActivity(Application.Context, 0, resultIntent, PendingIntentFlags.UpdateCurrent); builder.SetContentIntent(resultPendingIntent); //Controls var controlsCount = 0; // Previous controlsCount++; builder.AddAction(previousAction); // Play/Pause builder.AddAction(pauseAction); // Next controlsCount++; builder.AddAction(nextAction); // Close //controlsCount++; //builder.AddAction(destroyAction); // If 5.0 >= use MediaStyle if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { int[] args = new int[controlsCount]; for (int i = 0; i < controlsCount; ++i) { args[i] = i; } var style = new Notification.MediaStyle(); style.SetShowActionsInCompactView(args); builder.SetStyle(style); } notificationBuilder = builder; }