コード例 #1
0
ファイル: SmsReceiver.cs プロジェクト: sliang951753/Text2IM
        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);
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
ファイル: AppWidget.cs プロジェクト: muak/XamarinWidgetSample
        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);
        }
コード例 #4
0
        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);
        }
コード例 #7
0
        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);
        }