OSDN Git Service

Back should progress through Gallery and return Home for widget intents.
authorYuli Huang <yuli@google.com>
Wed, 23 May 2012 08:06:32 +0000 (16:06 +0800)
committerYuli Huang <yuli@google.com>
Wed, 23 May 2012 08:09:47 +0000 (16:09 +0800)
bug:6384492
Change-Id: I7ffb824568e400ff5724a29c1908c34a1e10235c

src/com/android/gallery3d/app/Gallery.java
src/com/android/gallery3d/app/PhotoPage.java
src/com/android/gallery3d/gadget/WidgetClickHandler.java

index dd30d7e..bdd4a0b 100644 (file)
@@ -198,6 +198,9 @@ public final class Gallery extends AbstractGalleryActivity implements OnCancelLi
                     data.putString(PhotoPage.KEY_MEDIA_SET_PATH, albumPath.toString());
                 }
                 data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, itemPath.toString());
+                if (intent.getBooleanExtra(PhotoPage.KEY_TREAT_BACK_AS_UP, false)) {
+                    data.putBoolean(PhotoPage.KEY_TREAT_BACK_AS_UP, true);
+                }
 
                 // Displays the filename as title, reading the filename from the interface:
                 // {@link android.provider.OpenableColumns#DISPLAY_NAME}.
index 2132d06..36ccc67 100644 (file)
@@ -91,6 +91,7 @@ public class PhotoPage extends ActivityState implements
     public static final String KEY_INDEX_HINT = "index-hint";
     public static final String KEY_OPEN_ANIMATION_RECT = "open-animation-rect";
     public static final String KEY_APP_BRIDGE = "app-bridge";
+    public static final String KEY_TREAT_BACK_AS_UP = "treat-back-as-up";
 
     public static final String KEY_RETURN_INDEX_HINT = "return-index-hint";
 
@@ -127,6 +128,7 @@ public class PhotoPage extends ActivityState implements
     private SnailAlbum mScreenNailSet;
     private OrientationManager mOrientationManager;
     private boolean mHasActivityResult;
+    private boolean mTreatBackAsUp;
 
     private NfcAdapter mNfcAdapter;
 
@@ -180,6 +182,7 @@ public class PhotoPage extends ActivityState implements
         mOriginalSetPathString = mSetPathString;
         mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity.getAndroidContext());
         Path itemPath = Path.fromString(data.getString(KEY_MEDIA_ITEM_PATH));
+        mTreatBackAsUp = data.getBoolean(KEY_TREAT_BACK_AS_UP, false);
 
         if (mSetPathString != null) {
             mAppBridge = (AppBridge) data.getParcelable(KEY_APP_BRIDGE);
@@ -439,7 +442,11 @@ public class PhotoPage extends ActivityState implements
         } else if (mAppBridge == null || !switchWithCaptureAnimation(-1)) {
             // We are leaving this page. Set the result now.
             setResult();
-            super.onBackPressed();
+            if (mTreatBackAsUp) {
+                onUpPressed();
+            } else {
+                super.onBackPressed();
+            }
         }
     }
 
index 36575e4..35f9bec 100644 (file)
@@ -26,6 +26,7 @@ import android.widget.Toast;
 
 import com.android.gallery3d.R;
 import com.android.gallery3d.app.Gallery;
+import com.android.gallery3d.app.PhotoPage;
 
 public class WidgetClickHandler extends Activity {
     private static final String TAG = "PhotoAppWidgetClickHandler";
@@ -46,14 +47,19 @@ public class WidgetClickHandler extends Activity {
     @Override
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
-        Intent intent = getIntent();
-        if (isValidDataUri(intent.getData())) {
-            startActivity(new Intent(Intent.ACTION_VIEW, intent.getData()));
+        Uri uri = getIntent().getData();
+        Intent intent;
+        if (isValidDataUri(uri)) {
+            intent = new Intent(Intent.ACTION_VIEW, uri);
+            intent.putExtra(PhotoPage.KEY_TREAT_BACK_AS_UP, true);
         } else {
             Toast.makeText(this,
                     R.string.no_such_item, Toast.LENGTH_LONG).show();
-            startActivity(new Intent(this, Gallery.class));
+            intent = new Intent(this, Gallery.class);
         }
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |
+                Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+        startActivity(intent);
         finish();
     }
 }