Esempio n. 1
0
        public override void OnMessageReceived(RemoteMessage message)
        {
            var dependencyContainer = AndroidDependencyContainer.Instance;
            var userIsLoggedIn      = dependencyContainer.UserAccessManager.CheckIfLoggedIn();

            if (!userIsLoggedIn)
            {
                return;
            }

            var keyValueStorage = dependencyContainer.KeyValueStorage;

            if (!shouldScheduleSyncJob(keyValueStorage))
            {
                return;
            }

            var jobClass       = JavaUtils.ToClass <SyncJobService>();
            var jobScheduler   = (JobScheduler)GetSystemService(JobSchedulerService);
            var serviceName    = new ComponentName(this, jobClass);
            var jobInfoBuilder = new JobInfo.Builder(SyncJobServiceJobId, serviceName)
                                 .SetRequiredNetworkType(NetworkType.Any);

            if (PieApis.AreAvailable)
            {
                jobInfoBuilder = jobInfoBuilder.SetImportantWhileForeground(true);
            }

            jobScheduler.Schedule(jobInfoBuilder.Build());
            keyValueStorage.SetBool(HasPendingSyncJobServiceScheduledKey, true);
            keyValueStorage.SetDateTimeOffset(LastSyncJobScheduledAtKey, DateTimeOffset.Now);
        }
        public RemoteViews Setup(Context context, int widgetId)
        {
            var view = new RemoteViews(context.PackageName, Resource.Layout.SuggestionsWidget);

            var intent = new Intent(context, JavaUtils.ToClass <SuggestionsWidgetService>());

            intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);

            view.SetRemoteAdapter(Resource.Id.SuggestionsList, intent);
            view.SetEmptyView(Resource.Id.SuggestionsList, Resource.Id.NoData);

            var tapIntent = new Intent(context, JavaUtils.ToClass <WidgetsForegroundService>());

            tapIntent.SetAction(SuggestionTapped);
            tapIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);
            var tapPendingIntent = context.SafeGetForegroundService(0, tapIntent, UpdateCurrent);

            view.SetPendingIntentTemplate(Resource.Id.SuggestionsList, tapPendingIntent);

            view.SetTextViewText(Resource.Id.Title, Resources.WorkingOnThese);
            view.SetTextViewText(Resource.Id.NoData, Resources.NoSuggestionsAvailable);
            view.SetTextViewText(Resource.Id.ShowAllTimeEntriesLabel, Resources.ShowAllTimEntries);

            var openAppIntent        = new Intent(context, typeof(SplashScreen)).SetFlags(TaskOnHome);
            var openAppPendingIntent = PendingIntent.GetActivity(context, 0, openAppIntent, UpdateCurrent);

            view.SetOnClickPendingIntent(Resource.Id.ShowAllTimeEntriesLabel, openAppPendingIntent);

            return(view);
        }
Esempio n. 3
0
        public static void UpdateAllInstances <TWidgetProvider>()
            where TWidgetProvider : AppWidgetProvider
        {
            var context     = Application.Context;
            var widgetClass = JavaUtils.ToClass <TWidgetProvider>();

            var widgetIds = AppWidgetManager
                            .GetInstance(context)
                            .GetAppWidgetIds(new ComponentName(context, widgetClass));

            var intent = new Intent(Application.Context, widgetClass);

            intent.SetAction(AppWidgetManager.ActionAppwidgetUpdate);
            intent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, widgetIds);

            context.SendBroadcast(intent);
        }
Esempio n. 4
0
        public static void EnqueueWork(Context context, Intent intent)
        {
            var componentName = new ComponentName(context, JavaUtils.ToClass <ScheduleEventNotificationsService>());

            EnqueueWork(context, componentName, JobId, intent);
        }
Esempio n. 5
0
        public static void EnqueueWork(Context context, Intent intent)
        {
            var serviceClass = JavaUtils.ToClass <WidgetsAnalyticsService>();

            EnqueueWork(context, serviceClass, WidgetAnalyticsServiceJobId, intent);
        }