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