public override void OnReceive(Context context, Intent intent) { if (_isStarted) { //DO NOT REMOVE //Helps to avoid multiple receivers registration on same event Log.Debug("AbnormalMonitorService", $"Received {intent.Action}, but monitoring already started!"); return; } Log.Debug("AbnormalMonitorService", $"Received {intent.Action}"); DataHolder.Initialize(context); ScreenUnlockReceiver.SetUnlockReceiverStatus(context, enable: DataHolder.IsSelectedCategory(DataHolder.ScreenCategory)); PhoneCallReceiver.SetCallReceiverStatus(context, enable: DataHolder.IsSelectedCategory(DataHolder.PhoneCategory)); SmsReceiver.SetSmsReceiverStatus(context, enable: DataHolder.IsSelectedCategory(DataHolder.SmsCategory)); IntentFilter filter = new IntentFilter(); filter.AddAction(LocationManager.ModeChangedAction); context.ApplicationContext.RegisterReceiver(new LocationModeChangeReceiver(), filter); SystemModListenerService.SetSystemMonitoringStatus(context, enable: DataHolder.IsSelectedCategory(DataHolder.SystemCategory)); AlarmReceiver.RegisterReceiver(context); LocationUtils.SetLocationTrackingEnabled(DataHolder.IsSelectedCategory(DataHolder.LocationCategory)); _isStarted = true; }
public static void SetUnlockReceiverStatus(Context context, bool enable) { if (enable && _unlockReceiver == null) { var screenStateFilter = new IntentFilter(); screenStateFilter.AddAction(Intent.ActionScreenOn); _unlockReceiver = new ScreenUnlockReceiver(); context.ApplicationContext.RegisterReceiver(_unlockReceiver, screenStateFilter); } else if (!enable && _unlockReceiver != null) { context.ApplicationContext.UnregisterReceiver(_unlockReceiver); _unlockReceiver.UnregisterFromRuntime(); _unlockReceiver.Dispose(); _unlockReceiver = null; } }