diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index f442f22..9f4ea91 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -55,6 +55,7 @@
 import com.android.camera.CameraDisabledException;
 import com.android.camera.CameraHolder;
 import com.android.camera.CameraManager;
+import com.android.camera.util.IntentHelper;
 import com.android.camera2.R;
 
 import java.io.Closeable;
@@ -859,8 +860,7 @@
         try {
             boolean isSecureCamera = ((CameraActivity)activity).isSecureCamera();
             if (!isSecureCamera) {
-                Intent intent = new Intent(Intent.ACTION_VIEW)
-                        .setDataAndType(uri, "video/*")
+                Intent intent = IntentHelper.getVideoPlayerIntent(activity, uri)
                         .putExtra(Intent.EXTRA_TITLE, title)
                         .putExtra(KEY_TREAT_UP_AS_BACK, true);
                 activity.startActivityForResult(intent, CameraActivity.REQ_CODE_DONT_SWITCH_TO_PREVIEW);
@@ -934,8 +934,7 @@
      */
     public static boolean launchGallery(Context ctx) {
         if (ApiHelper.HAS_APP_GALLERY) {
-            ctx.startActivity(Intent.makeMainSelectorActivity(
-                    Intent.ACTION_MAIN, Intent.CATEGORY_APP_GALLERY));
+            ctx.startActivity(IntentHelper.getGalleryIntent(ctx));
             return true;
         }
         return false;
diff --git a/src_pd/com/android/camera/util/IntentHelper.java b/src_pd/com/android/camera/util/IntentHelper.java
new file mode 100644
index 0000000..79ff962
--- /dev/null
+++ b/src_pd/com/android/camera/util/IntentHelper.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.camera.util;
+
+import android.content.Context;
+import android.content.Intent;
+
+public class IntentHelper {
+
+    private static final String GALLERY_PACKAGE_NAME = "com.android.gallery3d";
+    private static final String GALLERY_ACTIVITY_CLASS =
+        "com.android.gallery3d.app.GalleryActivity";
+
+    public static Intent getGalleryIntent(Context context) {
+        return new Intent(Intent.ACTION_MAIN)
+            .setClassName(GALLERY_PACKAGE_NAME, GALLERY_ACTIVITY_CLASS);
+    }
+
+    public static Intent getVideoPlayerIntent(Context context, Uri uri) {
+        return new Intent(Intent.ACTION_VIEW)
+            .setPackageName(GALLERY_PACKAGE_NAME)
+            .setDataAndType(uri, "video/*");
+    }
+}
