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); }
/// <summary> /// This method is called when the 'updatePeriodMillis' from the AppwidgetProvider passes, /// or the user manually refreshes/resizes. /// </summary> public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { foreach (var id in appWidgetIds) { var rv = new RemoteViews(context.PackageName, Resource.Layout.appwidget_schedule); SetTextViewText(rv); var intent = new Intent(context, typeof(StackWidgetService)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, id); rv.SetRemoteAdapter(Resource.Id.list_schedule, intent); var intent2 = new Intent(context, typeof(ScheduleAppwidgetView)); intent2.SetAction(OpenApp); var piBackground = PendingIntent.GetBroadcast(context, 0, intent2, 0); rv.SetOnClickPendingIntent(Resource.Id.layout_schedule_widget, piBackground); var intent3 = new Intent(context, typeof(ScheduleAppwidgetView)); var piBackground2 = PendingIntent.GetBroadcast(context, 0, intent3, 0); intent3.SetAction(UpdateSchedule); rv.SetOnClickPendingIntent(Resource.Id.button_schedule_refresh, piBackground2); appWidgetManager.UpdateAppWidget(id, rv); } }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { try { foreach (var appWidgetId in appWidgetIds) { // Set up the intent that starts the widget agenda items service, which will provide the views for the collection Intent intent = new Intent(context, typeof(WidgetAgendaService)); intent.SetPackage(context.PackageName); // Add the app widget ID to the intent extras intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.SetData(Android.Net.Uri.Parse(intent.ToUri(Android.Content.IntentUriType.AndroidAppScheme))); // Instantiate the widget layout var views = new RemoteViews(context.PackageName, Resource.Layout.WidgetAgenda); // This is displayed while the list view loads. // My list view will always have items, so this will act as loading text. views.SetEmptyView(Resource.Id.WidgetAgendaListView, Resource.Id.WidgetAgendaEmptyView); // Wire the header click Intent openIntent = new Intent(context, typeof(MainActivity)) .SetAction(Intent.ActionView); PendingIntent pendingOpenIntent = PendingIntent.GetActivity(context, 0, openIntent, 0); views.SetOnClickPendingIntent(Resource.Id.WidgetAgendaHeaderBranding, pendingOpenIntent); // Wire the "+" click Intent addIntent = new Intent(context, typeof(MainActivity)) .SetAction(Intent.ActionView) .SetData(Android.Net.Uri.Parse("powerplanner:?" + new QuickAddToCurrentAccountArguments().SerializeToString())); PendingIntent pendingAddIntent = PendingIntent.GetActivity(context, 0, addIntent, 0); views.SetOnClickPendingIntent(Resource.Id.WidgetAgendaHeaderAddButton, pendingAddIntent); // Set up the list adapter to use our service that generates the items views.SetRemoteAdapter(Resource.Id.WidgetAgendaListView, intent); // Add click handlers to each individual item Intent itemClickIntent = new Intent(context, typeof(MainActivity)); itemClickIntent.SetAction(Intent.ActionView); itemClickIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent pendingItemClickIntent = PendingIntent.GetActivity(context, 0, itemClickIntent, 0); views.SetPendingIntentTemplate(Resource.Id.WidgetAgendaListView, pendingItemClickIntent); // Update the widget appWidgetManager.UpdateAppWidget(appWidgetId, views); Android.Util.Log.Debug("WidgetAgendaProvider", "Updated Widget"); } } catch (Exception ex) { TelemetryExtension.Current.TrackException(ex); } TelemetryExtension.Current?.TrackEvent("Widget_Agenda_OnUpdate"); base.OnUpdate(context, appWidgetManager, appWidgetIds); }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { try { foreach (var appWidgetId in appWidgetIds) { // Set up the intent that starts the widget schedule items service, which will provide the views for the collection Intent intent = new Intent(context, typeof(WidgetScheduleService)); intent.SetPackage(context.PackageName); // Add the app widget ID to the intent extras intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.SetData(Android.Net.Uri.Parse(intent.ToUri(Android.Content.IntentUriType.AndroidAppScheme))); // Instantiate the widget layout var views = new RemoteViews(context.PackageName, Resource.Layout.WidgetSchedule); // Localize header text views.SetTextViewText(Resource.Id.WidgetScheduleHeaderText, PowerPlannerResources.GetString("MainMenuItem_Schedule")); // This is displayed while the list view loads. // My list view will always have items, so this will act as loading text. views.SetEmptyView(Resource.Id.WidgetScheduleListView, Resource.Id.WidgetScheduleEmptyView); // Wire the header click Intent openIntent = new Intent(context, typeof(MainActivity)) .SetAction(Intent.ActionView) .SetData(Android.Net.Uri.Parse("powerplanner:?" + new ViewScheduleArguments() { LaunchSurface = LaunchSurface.SecondaryTile }.SerializeToString())); PendingIntent pendingOpenIntent = PendingIntent.GetActivity(context, 0, openIntent, 0); views.SetOnClickPendingIntent(Resource.Id.WidgetScheduleHeader, pendingOpenIntent); // Set up the list adapter to use our service that generates the items views.SetRemoteAdapter(Resource.Id.WidgetScheduleListView, intent); // Add click handlers to each individual item Intent itemClickIntent = new Intent(context, typeof(MainActivity)); itemClickIntent.SetAction(Intent.ActionView); itemClickIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent pendingItemClickIntent = PendingIntent.GetActivity(context, 0, itemClickIntent, 0); views.SetPendingIntentTemplate(Resource.Id.WidgetScheduleListView, pendingItemClickIntent); // Update the widget appWidgetManager.UpdateAppWidget(appWidgetId, views); } } catch (Exception ex) { TelemetryExtension.Current.TrackException(ex); } TelemetryExtension.Current?.TrackEvent("Widget_Schedule_OnUpdate"); base.OnUpdate(context, appWidgetManager, appWidgetIds); }
RemoteViews BuildRemoteViews(Context context, int[] appWidgetIds) { var widgetView = new RemoteViews(context.PackageName, Resource.Layout.Widget); var intent = new Intent(context, Java.Lang.Class.FromType(typeof(WidgetScheduleService))); widgetView.SetRemoteAdapter(Resource.Id.widget_listview, intent); RegisterClicks(context, appWidgetIds, widgetView); return(widgetView); }
private void SetListAdapter(RemoteViews remoteViews, Context context, int appWidgetId) { // Initialize adapter provided by StopListWidgetService Intent svcIntent = new Intent(context, typeof(StopsListWidgetService)); svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); // Get unique signiture of intent (to differentiate should we need it) Android.Net.Uri uri = Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.Scheme)); svcIntent.SetData(uri); //svcIntent.SetAction(AppWidgetManager.ActionAppwidgetUpdate); // Tell view to get data from adapter remoteViews.SetRemoteAdapter(Resource.Id.stopsWidgetList, svcIntent); }
/** * Creates a large layout for the app widget * * This layout is only supported in SDK >= 11 (Honeycomb) * * @param context Application context * @param appWidgetId id of the widget * @return RemoteViews for the large layout */ private static RemoteViews CreateLargeLayout(Context context, int appWidgetId) { RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout); // Specify the service to provide data for the collection widget. Note that we need to // embed the appWidgetId via the data otherwise it will be ignored. Intent intent = new Intent(context, typeof (RichPushWidgetService)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); remoteViews.SetRemoteAdapter(appWidgetId, Resource.Id.message_list, intent); // Set the empty view to be displayed if the collection is empty. It must be a sibling // view of the collection view. remoteViews.SetEmptyView(Resource.Id.message_list, Resource.Id.empty_view); // Bind a click listener template for the contents of the message list remoteViews.SetPendingIntentTemplate(Resource.Id.message_list, CreateMessageTemplateIntent(context, appWidgetId)); // Add a click pending intent to launch the inbox remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context)); return remoteViews; }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { currentAppWidgetManager = appWidgetManager; for (int i = 0; i < appWidgetIds.Length; i++) { //the service intent which will provide the views for the listview Intent intent = new Intent(context, typeof(CollectionWidgetService)); //adding the widget id to the intent extras intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); // Gets the remote object of the app widget RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout); //provide the listView with the needed adapter through the service remoteViews.SetRemoteAdapter(Resource.Id.list_view, intent); //Set the empty view in case the collection is empty remoteViews.SetEmptyView(Resource.Id.list_view, Resource.Id.empty_view); //setting up the pending intent template to be filled by each list item on click Intent navigationIntent = new Intent(context, typeof(AppWidget)); navigationIntent.SetAction(NavigationAction); navigationIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]); navigationIntent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); //Pending intent to be used as a template PendingIntent navigationPendingIntent = PendingIntent.GetBroadcast(context, 0, navigationIntent, PendingIntentFlags.UpdateCurrent); remoteViews.SetPendingIntentTemplate(Resource.Id.list_view, navigationPendingIntent); //refresh button click action Intent refreshIntent = new Intent(context, typeof(AppWidget)); refreshIntent.SetAction(RefreshAction); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]); refreshIntent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); remoteViews.SetOnClickPendingIntent(Resource.Id.refreshBTN, PendingIntent.GetBroadcast(context, 0, refreshIntent, 0)); appWidgetManager.UpdateAppWidget(appWidgetIds[i], remoteViews); } base.OnUpdate(context, appWidgetManager, appWidgetIds); }
private void SetupWidget(Context ctx) { RemoteViews views; var wm = AppWidgetManager.GetInstance(ctx); var cn = new ComponentName(ctx, Java.Lang.Class.FromType(typeof(WidgetProvider))); var ids = wm.GetAppWidgetIds(cn); if (UpdateService.IsUserLogged) { views = new RemoteViews(ctx.PackageName, Resource.Layout.keyguard_widget); SetupRunningBtn(ctx, views); var adapterServiceIntent = new Intent(ctx, typeof(RemotesViewsFactoryService)); adapterServiceIntent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, ids); adapterServiceIntent.SetData(Android.Net.Uri.Parse(adapterServiceIntent.ToUri(IntentUriType.Scheme))); for (int i = 0; i < ids.Length; i++) { views.SetRemoteAdapter(ids[i], Resource.Id.WidgetRecentEntriesListView, adapterServiceIntent); } var listItemIntent = new Intent(ctx, typeof(WidgetStartStopService.Receiver)); listItemIntent.SetData(Android.Net.Uri.Parse(listItemIntent.ToUri(IntentUriType.Scheme))); var pendingIntent = PendingIntent.GetBroadcast(ctx, 0, listItemIntent, PendingIntentFlags.UpdateCurrent); views.SetPendingIntentTemplate(Resource.Id.WidgetRecentEntriesListView, pendingIntent); views.SetOnClickPendingIntent(Resource.Id.WidgetActionButton, StartStopButtonIntent(ctx)); } else { views = new RemoteViews(ctx.PackageName, Resource.Layout.widget_login); views.SetOnClickPendingIntent(Resource.Id.WidgetLoginButton, LogInButtonIntent(ctx)); } // Update widget view. wm.UpdateAppWidget(ids, views); }
/** * Creates a large layout for the app widget * * This layout is only supported in SDK >= 11 (Honeycomb) * * @param context Application context * @param appWidgetId id of the widget * @return RemoteViews for the large layout */ private static RemoteViews CreateLargeLayout(Context context, int appWidgetId) { RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout); // Specify the service to provide data for the collection widget. Note that we need to // embed the appWidgetId via the data otherwise it will be ignored. Intent intent = new Intent(context, typeof(RichPushWidgetService)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); remoteViews.SetRemoteAdapter(appWidgetId, Resource.Id.message_list, intent); // Set the empty view to be displayed if the collection is empty. It must be a sibling // view of the collection view. remoteViews.SetEmptyView(Resource.Id.message_list, Resource.Id.empty_view); // Bind a click listener template for the contents of the message list remoteViews.SetPendingIntentTemplate(Resource.Id.message_list, CreateMessageTemplateIntent(context, appWidgetId)); // Add a click pending intent to launch the inbox remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context)); return(remoteViews); }
public static RemoteViews UpdateWidget(Context context, int appWidgetId, int[] appWidgetIds) { var remoteViews = new RemoteViews(context.PackageName, Resource.Layout.task_widget); var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryLauncher); intent.SetComponent(new ComponentName(context, Java.Lang.Class.FromType(typeof(MainActivity)))); var pending = PendingIntent.GetActivity(context, 0, intent, 0); remoteViews.SetOnClickPendingIntent(Resource.Id.widget_layout, pending); remoteViews.SetOnClickPendingIntent(Resource.Id.previous_button, GetPendingSelfIntent(context, ACTION_WIDGET_PREVIOUS)); remoteViews.SetOnClickPendingIntent(Resource.Id.forward_button, GetPendingSelfIntent(context, ACTION_WIDGET_FORWARD)); remoteViews.SetOnClickPendingIntent(Resource.Id.refresh_button, GetPendingSelfIntent(context, ACTION_WIDGET_REFRESH)); var svcIntent = new Intent(context, typeof(TaskWidgetService)); svcIntent.SetPackage(context.PackageName); svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); var itemIntent = new Intent(context, typeof(TaskWidget)); itemIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds); itemIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); itemIntent.SetAction(ACTION_WIDGET_LIST_ITEM); var itemPending = PendingIntent.GetBroadcast(context, 0, itemIntent, 0); remoteViews.SetPendingIntentTemplate(Resource.Id.task_listview, itemPending); var task = ""; switch (CurrentTask) { case 0: task = context.GetText(Resource.String.daily_task); break; case 1: task = context.GetText(Resource.String.weekly_task); break; case 2: task = context.GetText(Resource.String.one_time_task); break; } remoteViews.SetInt(Resource.Id.widget_layout, "setBackgroundColor", (int)(Opacity * 0xFF) << 24 | Theme); // 어두운 테마 if (Theme == Convert.ToInt32(0x000000)) { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.White); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.White); } // 밝은 테마 else { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.Black); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.Black); } remoteViews.SetTextViewText(Resource.Id.task, task); remoteViews.SetEmptyView(Resource.Id.task_listview, Resource.Id.empty_view); remoteViews.SetRemoteAdapter(Resource.Id.task_listview, svcIntent); if (Progress) { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Visible); } else { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Gone); } return(remoteViews); }
private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeAltParams widgetLargeAltParams) { if (!widgetLargeAltParams.IsRefreshing) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); // Bind the RemoteViewsService (adapter) for the Chapters list Intent intent = new Intent(context, typeof(RemoteChapterAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeAltParams.Descending); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent); // Set Chapter list click intent template Intent chapterClickIntentTemplate = new Intent(Intent.ActionView); PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context) .AddNextIntentWithParentStack(chapterClickIntentTemplate) .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate); // Bind the click intent for the refresh button on the widget Intent refreshIntent = new Intent(context, typeof(WidgetLargeAlt)); refreshIntent.SetAction(RefreshClick); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent); realm.Dispose(); } if (widgetLargeAltParams.OpenMenu) { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Visible); // Bind the click intent for the reverse button on the widget Intent CloseIntent = new Intent(context, typeof(WidgetLargeAlt)); CloseIntent.SetAction(MenuOutsideClick); CloseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent closePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, CloseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.menu_outside, closePendingIntent); if (!widgetLargeAltParams.IsRefreshing) { // Bind the RemoteViewsService (adapter) for the Book list Intent intent = new Intent(context, typeof(RemoteBookAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteBookAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_books, intent); // Set Book list click intent template Intent bookClickIntentTemplate = new Intent(context, typeof(WidgetLargeAlt)); PendingIntent bookClickPendingIntentTemplate = PendingIntent.GetBroadcast(context, appWidgetId, bookClickIntentTemplate, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_books, bookClickPendingIntentTemplate); } } else { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Invisible); } // Bind the click intent for the menu button on the widget Intent menuIntent = new Intent(context, typeof(WidgetLargeAlt)); menuIntent.SetAction(MenuClick); menuIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent menuPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, menuIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_menu, menuPendingIntent); // Bind the click intent for the reverse button on the widget Intent reverseIntent = new Intent(context, typeof(WidgetLargeAlt)); reverseIntent.SetAction(ReverseClick); reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent); }
private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeParams widgetLargeParams) { if (!widgetLargeParams.IsRefreshing) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); // Bind the RemoteViewsService (adapter) for the Chapters list Intent intent = new Intent(context, typeof(RemoteChapterAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeParams.Book); intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeParams.Descending); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent); // Set Chapter list click intent template Intent chapterClickIntentTemplate = new Intent(Intent.ActionView); PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context) .AddNextIntentWithParentStack(chapterClickIntentTemplate) .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate); // Set list header to Book title string title = realm.Find <Book>(widgetLargeParams.Book).Title; widgetView.SetTextViewText(Resource.Id.book_title, title); Intent bookIntent = new Intent(context, typeof(WidgetLarge)); bookIntent.SetAction(BookClick); bookIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent bookPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, bookIntent, PendingIntentFlags.OneShot); widgetView.SetOnClickPendingIntent(Resource.Id.book_title, bookPendingIntent); // Bind the click intent for the refresh button on the widget Intent refreshIntent = new Intent(context, typeof(WidgetLarge)); refreshIntent.SetAction(RefreshClick); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent); realm.Dispose(); } // Bind the click intent for the previous button on the widget Intent previousIntent = new Intent(context, typeof(WidgetLarge)); previousIntent.SetAction(PreviousClick); previousIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent previousPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, previousIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_previous, previousPendingIntent); // Bind the click intent for the next button on the widget Intent nextIntent = new Intent(context, typeof(WidgetLarge)); nextIntent.SetAction(NextClick); nextIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent nextPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, nextIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_next, nextPendingIntent); // Bind the click intent for the reverse button on the widget Intent reverseIntent = new Intent(context, typeof(WidgetLarge)); reverseIntent.SetAction(ReverseClick); reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent); }
private void SetupWidget (Context ctx) { RemoteViews views; var wm = AppWidgetManager.GetInstance (ctx); var cn = new ComponentName (ctx, Java.Lang.Class.FromType (typeof (WidgetProvider))); var ids = wm.GetAppWidgetIds (cn); if (UpdateService.IsUserLogged) { views = new RemoteViews (ctx.PackageName, Resource.Layout.keyguard_widget); SetupRunningBtn (ctx, views); var adapterServiceIntent = new Intent (ctx, typeof (RemotesViewsFactoryService)); adapterServiceIntent.PutExtra (AppWidgetManager.ExtraAppwidgetIds, ids); adapterServiceIntent.SetData (Android.Net.Uri.Parse (adapterServiceIntent.ToUri (IntentUriType.Scheme))); for (int i = 0; i < ids.Length; i++) { views.SetRemoteAdapter (ids[i], Resource.Id.WidgetRecentEntriesListView, adapterServiceIntent); } var listItemIntent = new Intent (ctx, typeof (WidgetStartStopService.Receiver)); listItemIntent.SetData (Android.Net.Uri.Parse (listItemIntent.ToUri (IntentUriType.Scheme))); var pendingIntent = PendingIntent.GetBroadcast (ctx, 0, listItemIntent, PendingIntentFlags.UpdateCurrent); views.SetPendingIntentTemplate (Resource.Id.WidgetRecentEntriesListView, pendingIntent); views.SetOnClickPendingIntent (Resource.Id.WidgetActionButton, StartStopButtonIntent (ctx)); } else { views = new RemoteViews (ctx.PackageName, Resource.Layout.widget_login); views.SetOnClickPendingIntent (Resource.Id.WidgetLoginButton, LogInButtonIntent (ctx)); } // Update widget view. wm.UpdateAppWidget (ids, views); }