--- android/Side9/src/dk/thoerup/side9/Side9WidgetProvider.java 2010/03/23 14:56:52 633 +++ android/Side9/src/dk/thoerup/side9/Side9WidgetProvider.java 2010/03/24 10:16:37 636 @@ -3,17 +3,23 @@ import java.net.URL; import java.net.URLConnection; +import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; -import android.appwidget.AppWidgetProviderInfo; import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.net.ConnectivityManager; +import android.net.Uri; import android.util.Log; import android.widget.RemoteViews; public class Side9WidgetProvider extends AppWidgetProvider { + + //The data needs to be static, since BroadcastReceivers (which WidgetProviders extends) are only valid during onReceive() + private static Side9Data usedData; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { @@ -21,39 +27,63 @@ final int N = appWidgetIds.length; // - Log.e("onUpdate", "onUpdate:" + N); + Log.e("Side9Pigen", "onUpdate:" + N); + ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + if (connMgr.getBackgroundDataSetting() == false) + { + Log.e("Side9Pigen", "background data disabled"); + return; + } try { - Side9Xml dataSource = new Side9Xml(); - Side9Data data = dataSource.loadXml(); + Side9Data newData = Side9Xml.loadXml(); + if (! newData.equals(usedData)) { + + + Log.e("Side9Pigen", "(Re)loading image:" + newData.url); + + URL imgUrl = new URL( newData.url ); + + URLConnection conn = imgUrl.openConnection(); + Bitmap image = BitmapFactory.decodeStream( conn.getInputStream() ); + + + usedData = newData; // if we made it to here without exceptions, save the new data + + + // Perform this loop procedure for each App Widget that belongs to this provider + for (int i=0; i