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 override void OnCreatePreferences(Bundle savedInstanceState, string rootKey) { AddPreferencesFromResource(Resource.Xml.settings); mPreferences = PreferenceManager.GetDefaultSharedPreferences(Activity); SettingsDir = new File(Activity.DataDir, "shared_prefs"); var exportPreference = FindPreference("export_settings"); exportPreference.PreferenceClick += (sender, args) => { var paths = new List <File> { new File(SettingsDir, SettingsFileName) }; foreach (var file in Activity.FilesDir.ListFiles()) { if (file.IsFile) { paths.Add(file); } } if (paths.Count > 0) { if (OtherUtils.CreateZipArchive(paths, exportFile.AbsolutePath)) { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_successful), ToastLength.Short).Show(); } else { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_failed), ToastLength.Short).Show(); } } else { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_export_no_files), ToastLength.Short).Show(); } }; var importPreference = FindPreference("import_settings"); importPreference.PreferenceClick += (sender, args) => { if (!exportFile.Exists()) { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_no_file), ToastLength.Short).Show(); return; } if (exportFile.Length() > 1024 * 1024) { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_big_file), ToastLength.Short).Show(); return; } if (OtherUtils.UnpackZipArchive(exportFile.AbsolutePath, Activity.CacheDir)) { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_successful), ToastLength.Short).Show(); } else { Toast.MakeText(Activity, Activity.GetString(Resource.String.toast_import_failed), ToastLength.Short).Show(); return; } foreach (var file in Activity.CacheDir.ListFiles()) { Stream outputStream; if (file.Name == SettingsFileName) { var path = new File(SettingsDir, SettingsFileName).AbsolutePath; Log.Debug(nameof(OtherUtils.UnpackZipArchive), path); outputStream = new FileStream(path, FileMode.Create); } else { outputStream = Activity.OpenFileOutput(file.Name, FileCreationMode.Private); } string text; if (!file.Exists()) { continue; } using (var reader = new StreamReader(new FileStream(file.AbsolutePath, FileMode.Open))) { text = reader.ReadToEnd(); } using (var writer = new StreamWriter(outputStream)) { writer.Write(text); } file.Delete(); } }; var categoriesPreference = (MultiSelectListPreference)FindPreference("selected_categories"); categoriesPreference.PreferenceChange += (sender, args) => { var set = args.NewValue.JavaCast <HashSet>(); SystemModListenerService.SetSystemMonitoringStatus(Activity, set.Contains(DataHolder.SystemCategory)); LocationUtils.SetLocationTrackingEnabled(set.Contains(DataHolder.LocationCategory)); ScreenUnlockReceiver.SetUnlockReceiverStatus(Activity, set.Contains(DataHolder.ScreenCategory)); PhoneCallReceiver.SetCallReceiverStatus(Activity, set.Contains(DataHolder.PhoneCategory)); SmsReceiver.SetSmsReceiverStatus(Activity, set.Contains(DataHolder.SmsCategory)); var categories = new List <string>(); foreach (var val in set.ToArray()) { categories.Add(val.ToString()); } mPreferences.Edit().PutStringSet(categoriesPreference.Key, categories).Apply(); }; var about = FindPreference("app_info"); about.Summary = Activity.ApplicationContext.PackageManager.GetPackageInfo(Activity.PackageName, 0).VersionName; about.PreferenceClick += (sender, args) => { if ((mDevClickedTimes = (mDevClickedTimes + 1) % 7) == 0) { if (Activity is SettingsActivity parent) { parent.LoadScreen(SettingsCategory.Developer); } } }; try { var summaryNotifyPreference = FindPreference(MonitoringSummaryType); summaryNotifyPreference.PreferenceChange += (sender, args) => { AlarmReceiver.RegisterReceiver(Activity, (bool)args.NewValue ? 1 : 0); }; } catch (Exception e) { Console.WriteLine(e.Message); Log.Error(nameof(MonitoringSummaryType), e.Message); } }
public override void OnReceive(Context context, Intent intent) { LocationUtils.SetLocationTrackingEnabled(DataHolder.IsSelectedCategory(DataHolder.LocationCategory)); MainActivity.Adapter?.Refresh(); }