package com.silencedut.knowweather.remoteviews; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.widget.RemoteViews; import com.silencedut.knowweather.ModelManager; import com.silencedut.knowweather.R; import com.silencedut.knowweather.SplashActivity; import com.silencedut.knowweather.common.Constants; import com.silencedut.knowweather.model.WeatherModel; import com.silencedut.knowweather.weather.entity.WeatherEntity; /** * Created by SilenceDut on 2016/11/10 . */ public class WeatherWidgetProvider extends AppWidgetProvider { public static final String UPDATE_ACTION = "main_activity_update_ui"; public WeatherWidgetProvider() { super(); } @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); String action = intent.getAction(); if (UPDATE_ACTION.equals(action)) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); updateWidget(context,appWidgetManager); } } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { updateWidget(context,appWidgetManager); } private void updateWidget(Context context,AppWidgetManager appWidgetManager) { WeatherEntity weatherEntity = ModelManager.getModel(WeatherModel.class).getCachedWeather(); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget); if (weatherEntity == null) { return; } WeatherEntity.BasicEntity basic = weatherEntity.getBasic(); remoteViews.setTextViewText(R.id.temp,basic.getTemp()); remoteViews.setTextViewText(R.id.weather_status, basic.getWeather()); remoteViews.setTextViewText(R.id.city, basic.getCity()); remoteViews.setImageViewResource(R.id.status_icon, Constants.getIconId(basic.getWeather())); Intent newTaskIntent = new Intent(context, SplashActivity.class); newTaskIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pIntent = PendingIntent.getActivity(context, 0, newTaskIntent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.widget_container, pIntent); appWidgetManager.updateAppWidget(new ComponentName(context, WeatherWidgetProvider.class), remoteViews); } }