I am making a widget on android with xamarin and I use as an example: https://github.com/Nailik/AppWidgetListView/blob/master/AppWidgetListView/WidgetProvider.cs
I adapted well and everything works at launch but I have a problem with the update. I am not using OnUpdate as in the example but I added in my OnReceive because I am using alarm to refresh my widget
so in my OnReceive I did this :
int appWidgetId = intent.GetIntExtra(AppWidgetManager.ExtraAppwidgetId,AppWidgetManager.InvalidAppwidgetId);
Intent svcIntent = new Intent(context, typeof(WidgetServiceList));
svcIntent.SetPackage(context.PackageName);
svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(Android.Content.IntentUriType.AndroidAppScheme)));
updateViews.SetEmptyView(Resource.Id.listViewWidget, Resource.Id.empty_view);
updateViews.SetRemoteAdapter(Resource.Id.listViewWidget, svcIntent);
forcing it works when loading, but no longer when updating due to appWidgetIds [i] (well I think)
would you have a solution to my problem?
edit :
string miseajourdata = context.GetSharedPreferences("alarme", MODE_PRIVATE).GetString("miseajourdata", "");
if (miseajourdata == "")
{
miseajourdata = "300000";
}
long miseajourdataLONG = Long.ParseLong(miseajourdata);
Intent alarmIntent = new Intent(context, typeof(WidgetAlarmeUpdate));
var source = PendingIntent.GetBroadcast(context, 0, alarmIntent, 0);
AlarmManager alarmManager = context.GetSystemService(Context.AlarmService).JavaCast<AlarmManager>();
alarmManager.SetExact(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + miseajourdataLONG, source);
updateViews.SetTextViewText(Resource.Id.Widgettitre, "Réseau déconnecté !");
ets....
ComponentName widgetId = new ComponentName(context, Java.Lang.Class.FromType(typeof(AppWidgetAlarme)).Name);
var svcIntent = new Intent(context, typeof(WidgetServiceList));
svcIntent.SetPackage(context.PackageName);
svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);
svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme)));
updateViews.SetEmptyView(Resource.Id.listViewWidget, Resource.Id.empty_view);
updateViews.SetRemoteAdapter(Resource.Id.listViewWidget, svcIntent);
ComponentName thisWidget = new ComponentName(context, Java.Lang.Class.FromType(typeof(AppWidgetAlarme)).Name);
AppWidgetManager manager = AppWidgetManager.GetInstance(context);
manager.UpdateAppWidget(thisWidget, updateViews);