protected override void OnHandleIntent(Intent intent) { lock (LOCK) { if (sWakeLock == null) { var pm = PowerManager.FromContext(this.ApplicationContext); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, KINVEY_FCM); } } sWakeLock.Acquire(); try { string action = intent.Action; if (action.Equals(Constants.STR_C2DM_INTENT_REGISTRATION)) { var registrationId = intent.GetStringExtra(REGISTRATION_ID); onRegistered(registrationId); } else if (action.Equals(Constants.STR_KINVEY_FCM_UNREGISTRATION)) { var unregistrationId = intent.GetStringExtra(Constants.STR_UNREGISTRATION_ID); onUnregistered(unregistrationId); } else if (action.Equals(Constants.STR_C2DM_INTENT_RECEIVE)) { string message = null; if (intent.HasExtra(MESSAGE_FROM_KINVEY_CONSOLE)) { message = intent.GetStringExtra(MESSAGE_FROM_KINVEY_CONSOLE); } else if (intent.HasExtra(MESSAGE_FROM_FCM)) { message = intent.GetStringExtra(MESSAGE_FROM_FCM); } onMessage(message); } else if (action.Equals(Constants.STR_KINVEY_ANDROID_ERROR)) { onError(intent.GetStringExtra(Constants.STR_GENERAL_ERROR)); } } finally { lock (LOCK) { //Sanity check for null as this is a public method if (sWakeLock != null) { sWakeLock.Release(); } } } }
/// <summary> /// Do a <see cref="Context.StartService(Intent)"/>, but holding a wake lock while the service starts. /// </summary> /// <remarks> /// This will modify the intent to hold an extra identifying the wake lock. When the service receives it /// in <see cref="Service.OnStartCommand"/>, it should pass back the <see cref="Intent"/> it receives there to /// <see cref="CompleteWakefulIntent(Intent)"/> in order to release the wake lock. /// </remarks> /// <param name="context">The <see cref="Context"/> in which it operate.</param> /// <param name="intent">The <see cref="Intent"/> with which to start the service, as per <see cref="Context.StartService(Intent)"/>.</param> /// <returns>The <see cref="ComponentName"/> of the <see cref="Service"/> being started.</returns> internal static ComponentName StartWakefulService(Context context, Intent intent) { lock (activeWakeLocksMutex) { int id = nextId; nextId++; if (nextId <= 0) { nextId = 1; } intent.PutExtra(ExtraWakeLockId, id); ComponentName comp = context.StartService(intent); if (comp == null) { return(null); } PowerManager pm = PowerManager.FromContext(context); PowerManager.WakeLock wl = pm.NewWakeLock(WakeLockFlags.Partial, "wake: " + comp.FlattenToShortString()); wl.SetReferenceCounted(false); wl.Acquire(WakeLockTimeout); activeWakeLocks[id] = wl; return(comp); } }
/// <summary> /// Class constructor. Use the supplied Context to obtain a WakeLock /// </summary> public RemotePlayback(Context context) { // Get an instance of the PowerManager to aquire a wake lock PowerManager pm = PowerManager.FromContext(context); wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "DBTest"); }
public override void OnReceive(Context context, Intent intent) { PowerManager.WakeLock sWakeLock; var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "GCM Broadcast Reciever Tag"); sWakeLock.Acquire(); //handle the notification here sWakeLock.Release(); }
public override void OnReceive(Context context, Intent intent) { var pm = PowerManager.FromContext(context); var wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "GCM Broadcast Reciever Tag"); wakeLock.Acquire(); // Handle the notification here. You have an Intent and Context which will contain the information you are after. // .... // When you are finished sWakeLock.Release(); }
private void CheckPackageForPowerOptimization(string package) { var powerManager = PowerManager.FromContext(Application.Context); //Power optimization checking was added in API 23 if ((int)Build.VERSION.SdkInt >= (int)BuildVersionCodes.M && powerManager.IsDeviceIdleMode && !powerManager.IsIgnoringBatteryOptimizations(package)) { _logger.Error("[Android broker] Power optimization detected for the application: " + package + " and the device is in doze mode or the app is in standby. \n" + "Please disable power optimizations for this application to authenticate."); } }
public static void AcquireWakeLock(Context context) { lock (Lock) { if (_wakeLock == null) { // This is called from BroadcastReceiver, there is no init. var pm = PowerManager.FromContext(context); _wakeLock = pm.NewWakeLock( WakeLockFlags.Partial, WAKE_LOCK_TAG_IDTOPushHandlerService); } } _wakeLock.Acquire(); }
/// <summary> /// This method is called when the BroadcastReceiver is receiving an Intent /// broadcast. /// </summary> /// <param name="context">The Context in which the receiver is running.</param> /// <param name="intent">The Intent being received.</param> /// <remarks> /// <para tool="javadoc-to-mdoc">This method is called when the BroadcastReceiver is receiving an Intent /// broadcast. During this time you can use the other methods on /// BroadcastReceiver to view/modify the current result values. This method /// is always called within the main thread of its process, unless you /// explicitly asked for it to be scheduled on a different thread using /// <c><see cref="M:Android.Content.Context.RegisterReceiver(Android.Content.BroadcastReceiver, Android.Content.IntentFilter, Android.Content.IntentFilter, Android.Content.IntentFilter)" /></c>. When it runs on the main /// thread you should /// never perform long-running operations in it (there is a timeout of /// 10 seconds that the system allows before considering the receiver to /// be blocked and a candidate to be killed). You cannot launch a popup dialog /// in your implementation of onReceive(). /// </para> /// <para tool="javadoc-to-mdoc"> /// <format type="text/html"> /// <b>If this BroadcastReceiver was launched through a <receiver> tag, /// then the object is no longer alive after returning from this /// function.</b> /// </format> This means you should not perform any operations that /// return a result to you asynchronously -- in particular, for interacting /// with services, you should use /// <c><see cref="M:Android.Content.Context.StartService(Android.Content.Intent)" /></c> instead of /// <c><see cref="M:Android.Content.Context.BindService(Android.Content.Intent, Android.Content.IServiceConnection, Android.Content.IServiceConnection)" /></c>. If you wish /// to interact with a service that is already running, you can use /// <c><see cref="M:Android.Content.BroadcastReceiver.PeekService(Android.Content.Context, Android.Content.Intent)" /></c>. /// </para> /// <para tool="javadoc-to-mdoc">The Intent filters used in <c><see cref="M:Android.Content.Context.RegisterReceiver(Android.Content.BroadcastReceiver, Android.Content.IntentFilter)" /></c> /// and in application manifests are <i>not</i> guaranteed to be exclusive. They /// are hints to the operating system about how to find suitable recipients. It is /// possible for senders to force delivery to specific recipients, bypassing filter /// resolution. For this reason, <c><see cref="M:Android.Content.BroadcastReceiver.OnReceive(Android.Content.Context, Android.Content.Intent)" /></c> /// implementations should respond only to known actions, ignoring any unexpected /// Intents that they may receive.</para> /// <para tool="javadoc-to-mdoc"> /// <format type="text/html"> /// <a href="http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context, android.content.Intent)" target="_blank">[Android Documentation]</a> /// </format> /// </para> /// </remarks> /// <since version="Added in API level 1" /> public override void OnReceive(Context context, Intent intent) { //Making sure that we receive notifications even when the app is stopped: PowerManager.WakeLock sWakeLock; var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "GCM Broadcast Reciever Tag"); sWakeLock.Acquire(); //Continue with the creation of the notification var n = Serialization.Deserialize <Notification>(intent.GetStringExtra("object")); var resultIntent = new Intent(context, typeof(MainActivity)); resultIntent.PutExtra("open", n.Open); resultIntent.PutExtra("data", n.Data); resultIntent.SetAction(n.Action); resultIntent.PutExtra("action", n.Action); resultIntent.PutExtra("id", n.ID.ToString()); resultIntent.AddFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop); if (!string.IsNullOrWhiteSpace(n.Data)) { var sp = context.GetSharedPreferences("ACD", FileCreationMode.Private); sp.Edit().PutString("launchData", Serialization.Serialize(n.Data)).Commit(); } var stackBuilder = Android.Support.V4.App.TaskStackBuilder.Create(context); stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(MainActivity))); stackBuilder.AddNextIntent(resultIntent); var resultPendingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent); var nb = new NotificationCompat.Builder(context) .SetContentTitle(n.Title) .SetSmallIcon(Resource.Drawable.icon) .SetContentText(n.Body).SetExtras(resultIntent.Extras) .SetContentIntent(resultPendingIntent) .SetStyle(new NotificationCompat.BigTextStyle().BigText(n.Body)) .SetAutoCancel(true); var nm = (NotificationManager)context.GetSystemService(Context.NotificationService); nm.Notify(n.ID, nb.Build()); sWakeLock.Release(); }
static void RunIntentInService(Context context, Intent intent) { lock (LOCK) { if (wakeLock == null) { var pm = PowerManager.FromContext(context); wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "Woken lock"); } } wakeLock.Acquire(); intent.SetClass(context, typeof(GPSDroidService)); context.StartService(intent); }
public static void RunIntentInService(Context context, Intent intent, string wakleLockTag) { lock (mutex) { if (sWakeLock == null) { // This is called from BroadcastReceiver, there is no init. var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "My WakeLock Tag"); } } sWakeLock.Acquire(); intent.SetClass(context, typeof(CloudNotificationIntentService)); context.StartService(intent); }
public static void RunIntentInService(Context context, Intent intent) { lock (Lock) { if (_sWakeLock == null) { // This is called from BroadcastReceiver, there is no init. var pm = PowerManager.FromContext(context); _sWakeLock = pm.NewWakeLock( WakeLockFlags.Partial, "My WakeLock Tag"); } } _sWakeLock.Acquire(); intent.SetClass(context, typeof(MyIntentService)); context.StartService(intent); }
internal static void RunIntentInService(Context context, Intent intent, string className) { lock (LOCK) { if (sWakeLock == null) { // This is called from BroadcastReceiver, there is no init. var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, WAKELOCK_KEY); } } Log.Verbose(TAG, "Acquiring wakelock"); sWakeLock.Acquire(); intent.SetClassName(context, className); context.StartService(intent); }
internal static void RunIntentInService(Context context, Intent intent, Type classType) { lock (Lock) { if (sWakeLock == null) { // This is called from BroadcastReceiver, there is no init. var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Partial, WakelockKey); } } //Logger.Debug("Acquiring wakelock"); sWakeLock.Acquire(); //intent.SetClassName(context, className); intent.SetClass(context, classType); context.StartService(intent); }
public override void OnReceive(Context context, Intent intent) { PowerManager.WakeLock sWakeLock; var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Full | WakeLockFlags.ScreenBright | WakeLockFlags.AcquireCausesWakeup, "Reminder TAG"); sWakeLock.Acquire(); var message = intent.GetStringExtra("message"); var title = intent.GetStringExtra("title"); TimeSpan alarmSaati = TimeSpan.Parse(intent.GetStringExtra("alarmSaati")); string _id = title + alarmSaati.ToString(@"hh\:mm"); int _alarmId = _id.GetHashCode(); var resultIntent = new Intent(context, typeof(MainActivity)); resultIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); var pending = PendingIntent.GetActivity(context, 0, resultIntent, PendingIntentFlags.CancelCurrent); var builder = new Notification.Builder(context) .SetContentTitle(title) .SetContentText(message) .SetSmallIcon(Resource.Drawable.Icon) .SetDefaults(NotificationDefaults.Lights) .SetOngoing(true); builder.SetContentIntent(pending); var notification = builder.Build(); var manager = NotificationManager.FromContext(context); manager.Notify(_alarmId, notification); sWakeLock.Release(); }
public override void OnReceive(Context context, Intent intent) { PowerManager.WakeLock sWakeLock; var pm = PowerManager.FromContext(context); sWakeLock = pm.NewWakeLock(WakeLockFlags.Full | WakeLockFlags.ScreenBright | WakeLockFlags.AcquireCausesWakeup, "Alarm TAG"); sWakeLock.Acquire(); string alarmAdi = intent.GetStringExtra("alarmAdi"); TimeSpan alarmSaati = TimeSpan.Parse(intent.GetStringExtra("alarmSaati")); int alarmInterval = int.Parse(intent.GetStringExtra("interval")); int alarmVolume = int.Parse(intent.GetStringExtra("volume")); int alarmPresses = int.Parse(intent.GetStringExtra("presses")); int alarmShakes = int.Parse(intent.GetStringExtra("shakes")); intent.RemoveExtra("alarmAdi"); intent.RemoveExtra("alarmSaati"); intent.RemoveExtra("interval"); intent.RemoveExtra("volume"); intent.RemoveExtra("presses"); intent.RemoveExtra("shakes"); var tmp = new Intent(context, typeof(AlarmActivity)); tmp.AddFlags(ActivityFlags.NewTask); tmp.AddFlags(ActivityFlags.NoHistory); tmp.PutExtra("alarmSaati", alarmSaati.ToString()); tmp.PutExtra("alarmAdi", alarmAdi); tmp.PutExtra("interval", alarmInterval.ToString()); tmp.PutExtra("volume", alarmVolume.ToString()); tmp.PutExtra("presses", alarmPresses.ToString()); tmp.PutExtra("shakes", alarmShakes.ToString()); context.StartActivity(tmp); sWakeLock.Release(); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { // Currently in a layout without a container, so no reason to create our view. return(null); } RelativeLayout view = inflater.Inflate(Resource.Layout.BiblePassage, container, false) as RelativeLayout; view.SetOnTouchListener(this); PassageWebView = new WebView(Rock.Mobile.PlatformSpecific.Android.Core.Context); PassageWebView.SetBackgroundColor(Android.Graphics.Color.Rgb(28, 28, 28)); PassageWebView.SetPadding(10, 0, 40, 0); view.AddView(PassageWebView); view.SetBackgroundColor(Android.Graphics.Color.Rgb(28, 28, 28)); // get our power management control PowerManager pm = PowerManager.FromContext(Rock.Mobile.PlatformSpecific.Android.Core.Context); WakeLock = pm.NewWakeLock(WakeLockFlags.Full, "Bible Passage"); BlockerView = new UIBlockerView(view, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels)); ResultView = new UIResultView(view, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels), delegate { if (RequestingBiblePassage == false) { RetrieveBiblePassage( ); } }); return(view); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { // Currently in a layout without a container, so no reason to create our view. return(null); } RelativeLayout view = inflater.Inflate(Resource.Layout.TaskWebView, container, false) as RelativeLayout; view.SetOnTouchListener(this); WebLayout = new WebLayout(Rock.Mobile.PlatformSpecific.Android.Core.Context); WebLayout.LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); WebLayout.SetBackgroundColor(Android.Graphics.Color.Black); view.AddView(WebLayout); ResultView = new UIResultView(view, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels), delegate { ResultView.Hide( ); if (string.IsNullOrEmpty(Url) == false) { ProcessUrl( ); } }); // get our power management control PowerManager pm = PowerManager.FromContext(Rock.Mobile.PlatformSpecific.Android.Core.Context); WakeLock = pm.NewWakeLock(WakeLockFlags.Full, "TaskWeb"); return(view); }
public override void OnCreate() { base.OnCreate(); this.disposable = new CompositeDisposable(); this.wakeLock = PowerManager.FromContext(this).NewWakeLock(WakeLockFlags.Partial, "espera-wake-lock"); this.wifiLock = WifiManager.FromContext(this).CreateWifiLock(WifiMode.Full, "espera-wifi-lock"); NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).Where(x => x) .Subscribe(x => this.NotifyNetworkMessengerConnected()) .DisposeWith(this.disposable); NetworkMessenger.Instance.Disconnected.Subscribe(x => this.NotifyNetworkMessengerDisconnected()) .DisposeWith(this.disposable); var userSettings = Locator.Current.GetService <UserSettings>(); NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).SampleAndCombineLatest(userSettings .WhenAnyValue(x => x.Port).DistinctUntilChanged(), (connected, _) => connected) .Where(x => x) .Subscribe(x => NetworkMessenger.Instance.Disconnect()) .DisposeWith(this.disposable); AndroidVolumeRequests.Instance.VolumeDown.CombineLatest(NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected), NetworkMessenger.Instance.WhenAnyValue(x => x.AccessPermission), (_, connected, permission) => connected && permission == NetworkAccessPermission.Admin) .Where(x => x) .SelectMany(_ => NetworkMessenger.Instance.GetVolume().ToObservable().SwallowNetworkExceptions()) .Where(currentVolume => currentVolume > 0) .Select(currentVolume => Math.Max(currentVolume - 0.1f, 0)) .Select(volume => NetworkMessenger.Instance.SetVolume(volume).ToObservable().SwallowNetworkExceptions()) .Concat() .Subscribe() .DisposeWith(this.disposable); AndroidVolumeRequests.Instance.VolumeUp.CombineLatest(NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected), NetworkMessenger.Instance.WhenAnyValue(x => x.AccessPermission), (_, connected, permission) => connected && permission == NetworkAccessPermission.Admin) .Where(x => x) .SelectMany(_ => NetworkMessenger.Instance.GetVolume().ToObservable().SwallowNetworkExceptions()) .Where(currentVolume => currentVolume < 1) .Select(currentVolume => Math.Min(currentVolume + 0.1f, 1)) .Select(volume => NetworkMessenger.Instance.SetVolume(volume).ToObservable().SwallowNetworkExceptions()) .Concat() .Subscribe() .DisposeWith(this.disposable); var androidSettings = Locator.Current.GetService <AndroidSettings>(); NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).CombineLatest(androidSettings.WhenAnyValue(x => x.SaveEnergy), (connected, saveEnergy) => { if (connected && !saveEnergy) { this.wakeLock.Acquire(); this.wifiLock.Acquire(); } else if (!connected) { this.ReleaseWakeLocks(); } return(Unit.Default); }) .Subscribe() .DisposeWith(this.disposable); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreateView(inflater, container, savedInstanceState); // get the root control from our .axml var layout = inflater.Inflate(Resource.Layout.Notes, container, false) as RelativeLayout; // get the refresh button from the layout RefreshButton = layout.FindViewById <Button>(Resource.Id.refreshButton); // create our overridden lockable scroll view ScrollView = new LockableScrollView(Rock.Mobile.PlatformSpecific.Android.Core.Context); ScrollView.ScrollBarStyle = ScrollbarStyles.InsideInset; ScrollView.OverScrollMode = OverScrollMode.Always; ScrollView.VerticalScrollbarPosition = ScrollbarPosition.Default; ScrollView.LayoutParameters = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent); ScrollView.OnTouchIntercept = OnInterceptTouchEvent; ScrollView.OnChangedScroll = OnScrollChanged; ((RelativeLayout.LayoutParams)ScrollView.LayoutParameters).AddRule(LayoutRules.CenterHorizontal); ((RelativeLayout.LayoutParams)ScrollView.LayoutParameters).AddRule(LayoutRules.Below, Resource.Id.refreshButton); // add it to our main layout. layout.AddView(ScrollView); Indicator = layout.FindViewById <ProgressBar>(Resource.Id.progressBar); Indicator.Visibility = ViewStates.Gone; Indicator.SetBackgroundColor(Rock.Mobile.UI.Util.GetUIColor(0)); Indicator.BringToFront(); // create the layout that will contain the notes ScrollViewLayout = new RelativeLayout(Rock.Mobile.PlatformSpecific.Android.Core.Context); ScrollView.AddView(ScrollViewLayout); ScrollViewLayout.SetOnTouchListener(this); RefreshButton.Click += (object sender, EventArgs e) => { DeleteNote( ); PrepareCreateNotes( ); }; // if the refresh button isn't enabled, hide it if (MobileApp.Shared.Network.RockLaunchData.Instance.Data.DeveloperModeEnabled == false) { RefreshButton.Visibility = ViewStates.Gone; } // get our power management control PowerManager pm = PowerManager.FromContext(Rock.Mobile.PlatformSpecific.Android.Core.Context); WakeLock = pm.NewWakeLock(WakeLockFlags.Full, "Notes"); ResultView = new UIResultView(layout, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels), OnResultViewDone); ResultView.Hide( ); // setup the tutorial overlay TutorialBacker = new View(Rock.Mobile.PlatformSpecific.Android.Core.Context); TutorialBacker.LayoutParameters = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); TutorialBacker.Alpha = 0; TutorialBacker.SetBackgroundColor(Android.Graphics.Color.Black); layout.AddView(TutorialBacker); AnimatingTutorial = false; TutorialOverlay = new ImageView(Rock.Mobile.PlatformSpecific.Android.Core.Context); TutorialOverlay.LayoutParameters = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent); ((RelativeLayout.LayoutParams)TutorialOverlay.LayoutParameters).AddRule(LayoutRules.CenterInParent); TutorialOverlay.Alpha = 0; TutorialOverlay.SetBackgroundColor(Android.Graphics.Color.Transparent); layout.AddView(TutorialOverlay); NavBarRevealTracker = new NavBarReveal( ); return(layout); }
public override void OnReceive(Context context, Intent intent) { var powerManager = PowerManager.FromContext(context); var wakeLock = powerManager.NewWakeLock(WakeLockFlags.Partial, WakeLockTag); wakeLock.Acquire(); var dataStore = ServiceLocator.Instance.Get <IVplanDataStore>(); Task.Run(async() => { try { var diff = await dataStore.Refresh(); if (diff.NewBookmarkedChanges.Any() || diff.NewNewSchoolClassBookmarks.Any()) { string text; if (diff.NewBookmarkedChanges.Any()) { text = diff.NewBookmarkedChanges.Count() + " neue Einträge"; } else { text = diff.NewNewSchoolClassBookmarks.Count() + " neue Klassen"; } var notificationManager = NotificationManager.FromContext(context); if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { var channel = new NotificationChannel(ChannelId, "Vertretungsplan", NotificationImportance.High); channel.EnableLights(true); channel.EnableVibration(true); notificationManager.CreateNotificationChannel(channel); } var resultIntent = new Intent(context, typeof(MainActivity)); var stackBuilder = Android.Support.V4.App.TaskStackBuilder.Create(context); stackBuilder.AddNextIntentWithParentStack(resultIntent); var pendingIntent = stackBuilder.GetPendingIntent(0, 0); var builder = new NotificationCompat.Builder(context, ChannelId) .SetContentTitle("Neuer Vertretungsplan verfügbar") .SetContentText(text) .SetSmallIcon(Resource.Mipmap.Icon) .SetPriority(NotificationCompat.PriorityMax) .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification)) .SetDefaults(NotificationCompat.DefaultVibrate | NotificationCompat.DefaultLights) .SetContentIntent(pendingIntent) .SetAutoCancel(true); notificationManager.Notify(NotificationId, builder.Build()); } } catch (Exception e) { } finally { wakeLock.Release(); } }); }