summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gallerycommon/src/com/android/gallery3d/common/ApiHelper.java3
-rw-r--r--src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java10
-rw-r--r--src/com/android/gallery3d/gadget/WidgetConfigure.java31
-rw-r--r--src/com/android/gallery3d/gadget/WidgetService.java3
4 files changed, 36 insertions, 11 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
index 305fb2cf3..06518108b 100644
--- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
+++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
@@ -64,6 +64,9 @@ public class ApiHelper {
public static final boolean HAS_ACTIVITY_INVALIDATE_OPTIONS_MENU =
hasMethod(Activity.class, "invalidateOptionsMenu");
+ public static final boolean HAS_REMOTE_VIEWS_SERVICE =
+ Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;
+
private static boolean hasField(Class<?> klass, String fieldName) {
try {
klass.getDeclaredField(fieldName);
diff --git a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
index 98139026e..58466bf01 100644
--- a/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
+++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
@@ -16,6 +16,7 @@
package com.android.gallery3d.gadget;
+import android.annotation.TargetApi;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
@@ -28,6 +29,7 @@ import android.util.Log;
import android.widget.RemoteViews;
import com.android.gallery3d.R;
+import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry;
import com.android.gallery3d.onetimeinitializer.GalleryWidgetMigrator;
@@ -50,8 +52,11 @@ public class PhotoAppWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
- // migrate gallery widgets from pre-JB releases to JB due to bucket ID change
- GalleryWidgetMigrator.migrateGalleryWidgets(context);
+
+ if (ApiHelper.HAS_REMOTE_VIEWS_SERVICE) {
+ // migrate gallery widgets from pre-JB releases to JB due to bucket ID change
+ GalleryWidgetMigrator.migrateGalleryWidgets(context);
+ }
WidgetDatabaseHelper helper = new WidgetDatabaseHelper(context);
try {
@@ -71,6 +76,7 @@ public class PhotoAppWidgetProvider extends AppWidgetProvider {
}
@SuppressWarnings("deprecation")
+ @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
private static RemoteViews buildStackWidget(Context context, int widgetId, Entry entry) {
RemoteViews views = new RemoteViews(
context.getPackageName(), R.layout.appwidget_main);
diff --git a/src/com/android/gallery3d/gadget/WidgetConfigure.java b/src/com/android/gallery3d/gadget/WidgetConfigure.java
index 5717657c2..331e7d2c4 100644
--- a/src/com/android/gallery3d/gadget/WidgetConfigure.java
+++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java
@@ -29,12 +29,14 @@ import com.android.gallery3d.R;
import com.android.gallery3d.app.AlbumPicker;
import com.android.gallery3d.app.CropImage;
import com.android.gallery3d.app.DialogPicker;
+import com.android.gallery3d.common.ApiHelper;
public class WidgetConfigure extends Activity {
@SuppressWarnings("unused")
private static final String TAG = "WidgetConfigure";
public static final String KEY_WIDGET_TYPE = "widget-type";
+ private static final String KEY_PICKED_ITEM = "picked-item";
private static final int REQUEST_WIDGET_TYPE = 1;
private static final int REQUEST_CHOOSE_ALBUM = 2;
@@ -51,12 +53,11 @@ public class WidgetConfigure extends Activity {
private static int MAX_WIDGET_SIDE = 360;
private int mAppWidgetId = -1;
- private int mWidgetType = 0;
private Uri mPickedItem;
@Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
+ protected void onCreate(Bundle savedState) {
+ super.onCreate(savedState);
mAppWidgetId = getIntent().getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
if (mAppWidgetId == -1) {
@@ -65,12 +66,24 @@ public class WidgetConfigure extends Activity {
return;
}
- if (mWidgetType == 0) {
- Intent intent = new Intent(this, WidgetTypeChooser.class);
- startActivityForResult(intent, REQUEST_WIDGET_TYPE);
+ if (savedState == null) {
+ if (ApiHelper.HAS_REMOTE_VIEWS_SERVICE) {
+ Intent intent = new Intent(this, WidgetTypeChooser.class);
+ startActivityForResult(intent, REQUEST_WIDGET_TYPE);
+ } else { // Choose the photo type widget
+ setWidgetType(new Intent()
+ .putExtra(KEY_WIDGET_TYPE, R.id.widget_type_photo));
+ }
+ } else {
+ mPickedItem = savedState.getParcelable(KEY_PICKED_ITEM);
}
}
+ protected void onSaveInstanceStates(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putParcelable(KEY_PICKED_ITEM, mPickedItem);
+ }
+
private void updateWidgetAndFinish(WidgetDatabaseHelper.Entry entry) {
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews views = PhotoAppWidgetProvider.buildWidget(this, mAppWidgetId, entry);
@@ -153,11 +166,11 @@ public class WidgetConfigure extends Activity {
}
private void setWidgetType(Intent data) {
- mWidgetType = data.getIntExtra(KEY_WIDGET_TYPE, R.id.widget_type_shuffle);
- if (mWidgetType == R.id.widget_type_album) {
+ int widgetType = data.getIntExtra(KEY_WIDGET_TYPE, R.id.widget_type_shuffle);
+ if (widgetType == R.id.widget_type_album) {
Intent intent = new Intent(this, AlbumPicker.class);
startActivityForResult(intent, REQUEST_CHOOSE_ALBUM);
- } else if (mWidgetType == R.id.widget_type_shuffle) {
+ } else if (widgetType == R.id.widget_type_shuffle) {
WidgetDatabaseHelper helper = new WidgetDatabaseHelper(this);
try {
helper.setWidget(mAppWidgetId, WidgetDatabaseHelper.TYPE_SHUFFLE, null);
diff --git a/src/com/android/gallery3d/gadget/WidgetService.java b/src/com/android/gallery3d/gadget/WidgetService.java
index eba7403c9..83e37a630 100644
--- a/src/com/android/gallery3d/gadget/WidgetService.java
+++ b/src/com/android/gallery3d/gadget/WidgetService.java
@@ -16,6 +16,7 @@
package com.android.gallery3d.gadget;
+import android.annotation.TargetApi;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.graphics.Bitmap;
@@ -25,11 +26,13 @@ import android.widget.RemoteViewsService;
import com.android.gallery3d.R;
import com.android.gallery3d.app.GalleryApp;
+import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.data.ContentListener;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.data.Path;
+@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
public class WidgetService extends RemoteViewsService {
@SuppressWarnings("unused")