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); }