0
美好的一天,我有一个xamarin表单应用程序,我需要在android平台上构建一个小部件。xamarin表单 - 安卓小部件更新
我已经实施了一个小部件,从SimpleWidget
和HelloAppWidget
。
的问题是:
微件应该每次用户点击它被更新,显示当前时间。它在xamarin Android中更新,但不在Forms中。在xamarin表单中,onUpdate方法在创建窗口小部件后仅使用一次,而不是在用户点击时调用。
[BroadcastReceiver(Label = "WIIDget")]
[IntentFilter(new string[] {"android.appwidget.action.APPWIDGET_UPDATE"})]
[MetaData("android.appwidget.provider", Resource = "@xml/appwidgetprovider")]
public class Widget : AppWidgetProvider
{
public static string AnnouncmentClick = "AnnouncementClickTag";
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
var me = new ComponentName(context, Java.Lang.Class.FromType(typeof(Widget)).Name);
appWidgetManager.UpdateAppWidget(me, BuildRemoteViews(context, appWidgetIds));
}
private RemoteViews BuildRemoteViews(Context context, int[] appWidgetIds)
{
var widgetView = new RemoteViews(context.PackageName, Resource.Layout.Widget);
widgetView.SetTextViewText(Resource.Id.widgetMedium, "I am a title");
widgetView.SetTextViewText(Resource.Id.widgetSmall, $"Last click in {DateTime.Now}");
var intent = new Intent(context, typeof(Widget));
intent.SetAction(AppWidgetManager.ActionAppwidgetUpdate);
intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds);
var piBackground = PendingIntent.GetBroadcast(context, 0, intent, PendingIntentFlags.UpdateCurrent);
widgetView.SetOnClickPendingIntent(Resource.Id.widgetBackground, piBackground);
return widgetView;
}
}
P.S此阻碍工作在xamarin表单中,我可以看到打开窗口小部件的时间。但时间并没有更新,当我点击它,因为它在xamarin中的作用android
谢谢,那完美的作品 – Eve