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); }
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); }
public static void EnqueueWork(Context context, Intent intent) { var componentName = new ComponentName(context, JavaUtils.ToClass <ScheduleEventNotificationsService>()); EnqueueWork(context, componentName, JobId, intent); }
public static void EnqueueWork(Context context, Intent intent) { var serviceClass = JavaUtils.ToClass <WidgetsAnalyticsService>(); EnqueueWork(context, serviceClass, WidgetAnalyticsServiceJobId, intent); }