使用小部件上的按钮手动更新Android应用程序小部件

我有一个Android App小部件和小部件上的按钮.我已将更新时间段设置为30分钟,但我还想在触摸按钮时更新小部件.这是我的代码:

        RemoteViews remoteV = new RemoteViews(context.getPackageName(), R.layout.widgetmenu);

        Intent intentSync = new Intent(context, MessMenuWidgetProvider.class);
        PendingIntent pendingSync = PendingIntent.getBroadcast(context,0, intentSync,0);
        remoteV.setOnClickPendingIntent(R.id.imageButtonSync,pendingSync);

        appWidgetManager.updateAppWidget(awID, remoteV);

我已将更新时间设置为30分钟,因此每30分钟调用一次onUpdate()函数.
我想要实现的是使用按钮手动调用onUpdate().但它没有发生.有帮助吗?

最佳答案
这非常容易.下面是修改后的代码,用于在每次单击按钮时调用窗口小部件的“onUpdate”方法.

RemoteViews remoteV = new RemoteViews(context.getPackageName(), R.layout.widgetmenu);

Intent intentSync = new Intent(context, MessMenuWidgetProvider.class);
intentSync.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); //You need to specify the action for the intent. Right now that intent is doing nothing for there is no action to be broadcasted.
PendingIntent pendingSync = PendingIntent.getBroadcast(context,0, intentSync, PendingIntent.FLAG_UPDATE_CURRENT); //You need to specify a proper flag for the intent. Or else the intent will become deleted.
remoteV.setOnClickPendingIntent(R.id.imageButtonSync,pendingSync);

appWidgetManager.updateAppWidget(awID, remoteV);

现在,每次单击该按钮时,广播AppWidgetManager.ACTION_APPWIDGET_UPDATE都将发送到您的窗口小部件,该类中的方法将处理更新.因此,要么调用onUpdate方法,要么调用onReceive方法.无论你指定哪个.

转载注明原文:使用小部件上的按钮手动更新Android应用程序小部件 - 代码日志