public override void OnReceive(Context context, Intent intent) { if (intent.Action.Equals(Telephony.Sms.Intents.SmsReceivedAction)) { SmsMessage[] messages = Telephony.Sms.Intents.GetMessagesFromIntent(intent); IEnumerable <SmsData> smsDataList = ExtractMessages(messages); Intent mailIntent = new Intent(context, typeof(MailPushService)); string json = JsonConvert.SerializeObject(smsDataList); mailIntent.PutExtra("object", json); context.StartService(mailIntent); JobInfo.Builder builder = new JobInfo.Builder(TextPersistenceService.GetNewJobId(), new ComponentName(context, Java.Lang.Class.FromType(typeof(TextPersistenceService)))); PersistableBundle bundle = new PersistableBundle(); bundle.PutString("object", json); builder.SetExtras(bundle); builder.SetMinimumLatency(500); builder.SetOverrideDeadline(1000); JobInfo jobInfo = builder.Build(); JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService); jobScheduler.Schedule(jobInfo); } }
private void RefreshJobs() { StopJobs(); if (settings != null && settings.EnableAndroidNotification) { CreateAutoJobNotificationChannel(); var jobServ = (JobScheduler)GetSystemService(JobSchedulerService); if (settings.AutoStopWifi.Count > 0 || settings.AutoStartCellur) { JobInfo.Builder jobBuilder = new JobInfo.Builder( TrojanPlusAutoJobService.JobId, new ComponentName(this, Class.FromType(typeof(TrojanPlusAutoJobService)).Name)); jobBuilder.SetRequiredNetworkType(NetworkType.Any); jobBuilder.SetBackoffCriteria(AutoJobServiceBackoffCriteria, BackoffPolicy.Linear); jobBuilder.SetMinimumLatency(AutoJobServiceMinimumLatency); jobBuilder.SetOverrideDeadline(AutoJobServiceMaxLatency); jobBuilder.SetPersisted(true); PersistableBundle bundle = new PersistableBundle(); bundle.PutString("settings", JsonConvert.SerializeObject(settings)); jobBuilder.SetExtras(bundle); var succ = jobServ.Schedule(jobBuilder.Build()); Log.Debug(TAG, "RefreshJobs TrojanPlusAutoJobService " + succ); } } }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { System.Diagnostics.Debug.WriteLine("Widget OnUpdate"); var me = new ComponentName(context, Java.Lang.Class.FromType(typeof(AppWidget)).Name); appWidgetManager.UpdateAppWidget(me, BuildRemoteViews(context, appWidgetIds)); var scheduler = context.GetSystemService(Context.JobSchedulerService) as JobScheduler; var jobName = new ComponentName(context, Java.Lang.Class.FromType(typeof(WidgetJobService)).Name); var jobInfo = new JobInfo.Builder(1, jobName); jobInfo.SetBackoffCriteria(5000, BackoffPolicy.Linear); jobInfo.SetPersisted(true); jobInfo.SetPeriodic(900000); jobInfo.SetRequiredNetworkType(NetworkType.Any); jobInfo.SetRequiresCharging(false); var bundle = new PersistableBundle(); bundle.PutIntArray(WIDGET_BUNDLE, appWidgetIds); jobInfo.SetExtras(bundle); var job = jobInfo.Build(); scheduler.Schedule(job); }
private void ShowLater(NotificationRequest notificationRequest) { if (notificationRequest.NotifyTime.HasValue == false) { return; } var triggerTime = NotifyTimeInMilliseconds(notificationRequest.NotifyTime.Value); notificationRequest.NotifyTime = null; var serializedNotification = ObjectSerializer <NotificationRequest> .SerializeObject(notificationRequest); var javaClass = Java.Lang.Class.FromType(typeof(ScheduledNotificationJobService)); var component = new ComponentName(Application.Context, javaClass); // Bundle up parameters var extras = new PersistableBundle(); extras.PutString(NotificationCenter.ExtraReturnNotification, serializedNotification); triggerTime -= NotifyTimeInMilliseconds(DateTime.Now); var builder = new JobInfo.Builder(notificationRequest.NotificationId, component); builder.SetMinimumLatency(triggerTime); // Fire at TriggerTime builder.SetOverrideDeadline(triggerTime + 5000); // Or at least 5 Seconds Later builder.SetExtras(extras); builder.SetPersisted(CheckBootPermission()); //Job will be recreated after Reboot if Permissions are granted var jobInfo = builder.Build(); _jobScheduler.Schedule(jobInfo); }
public static JobInfo.Builder SetFibonacciValue(this JobInfo.Builder builder, int value) { var extras = new PersistableBundle(); extras.PutLong(FibonacciValueKey, value); builder.SetExtras(extras); return(builder); }
private void ShowLater(LocalNotification localNotification) { if (localNotification.NotifyTime.HasValue == false) { return; } var triggerTime = NotifyTimeInMilliseconds(localNotification.NotifyTime.Value); localNotification.NotifyTime = null; var serializedNotification = ObjectSerializer <LocalNotification> .SerializeObject(localNotification); var scheduled = false; if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { var javaClass = Java.Lang.Class.FromType(typeof(ScheduledNotificationJobService)); var component = new ComponentName(Application.Context, javaClass); // Bundle up parameters var extras = new PersistableBundle(); extras.PutString(ExtraReturnNotification, serializedNotification); triggerTime -= NotifyTimeInMilliseconds(DateTime.Now); var builder = new JobInfo.Builder(localNotification.NotificationId, component); builder.SetMinimumLatency(triggerTime); // Fire at TriggerTime builder.SetOverrideDeadline(triggerTime + 5000); // Or at least 5 Seconds Later builder.SetExtras(extras); builder.SetPersisted(CheckBootPermission()); //Job will be recreated after Reboot if Permissions are granted var jobInfo = builder.Build(); var result = _jobScheduler.Schedule(jobInfo); scheduled = result == JobScheduler.ResultSuccess; } if (scheduled) { return; } // The job was not scheduled. So use the old implementation var notificationIntent = new Intent(Application.Context, typeof(ScheduledNotificationReceiver)); notificationIntent.SetAction("LocalNotifierIntent" + localNotification.NotificationId); notificationIntent.PutExtra(ExtraReturnNotification, serializedNotification); var pendingIntent = PendingIntent.GetBroadcast(Application.Context, 0, notificationIntent, PendingIntentFlags.CancelCurrent); _alarmManager.Set(AlarmType.RtcWakeup, triggerTime, pendingIntent); }
public static void ScheduleUpdateNow(Context context) { var jobScheduler = context.GetSystemService(Java.Lang.Class.FromType(typeof(JobScheduler))) as JobScheduler; jobScheduler.CancelAll(); var parameters = new PersistableBundle(); parameters.PutLong("UserID", data.UserId); Console.WriteLine("UserID: " + data.UserId); var jobBuilder = new JobInfo.Builder(1, new ComponentName(context, Java.Lang.Class.FromType(typeof(UpdateService)))); jobBuilder.SetPeriodic(Interval); var jobInfo = jobBuilder.SetExtras(parameters).Build(); var result = jobScheduler?.Schedule(jobInfo); Console.WriteLine("Scheduled a job. Result: " + result); }