如何根据广播消息更新小部件?

时间:2018-01-11 15:04:48

标签: android widget broadcast

我收到了来自我服务的广播消息,它在其中一个活动中更新了信息,但我希望它也能更新我的Widget。我该怎么办呢?

我们假设系统中有一个广播,其中有动作"动作"它包含额外的" TIME"。我如何制作" TIME"出现在小部件中?我有一个由android工作室制作的干净课程。

1 个答案:

答案 0 :(得分:0)

您只需在广播接收器的 onReceive()中执行操作即可创建 RemoteView 并更新小部件:

public static final String ACTION = "ACTION";
public static final String TIME = "TIME";

@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction() != null) {
        if (intent.getAction().equals(ACTION)) {
            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
            int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);
            String time = intent.getStringExtra(TIME);
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
            views.setTextViewText(R.id.appwidget_text, time);
            appWidgetManager.updateAppWidget(widgetId, views);
        }
    } else {
        super.onReceive(context, intent);
    }
}