OSDN Git Service

Consider camera available only if intent resolves to an activity.
authorMangesh Ghiware <mghiware@google.com>
Tue, 22 Oct 2013 21:10:17 +0000 (14:10 -0700)
committerMangesh Ghiware <mghiware@google.com>
Tue, 22 Oct 2013 21:10:17 +0000 (14:10 -0700)
Fixes crash for restricted profiles without a camera.

Bug: 11289596
Change-Id: I3545dbeae2e4c9094746b51b770daa93e3896bb6

src/com/android/gallery3d/util/GalleryUtils.java
src_pd/com/android/gallery3d/util/IntentHelper.java

index 9a78fcd..d1f8229 100644 (file)
@@ -43,6 +43,7 @@ import com.android.gallery3d.common.ApiHelper;
 import com.android.gallery3d.data.DataManager;
 import com.android.gallery3d.data.MediaItem;
 import com.android.gallery3d.ui.TiledScreenNail;
+import com.android.gallery3d.util.IntentHelper;
 import com.android.gallery3d.util.ThreadPool.CancelListener;
 import com.android.gallery3d.util.ThreadPool.JobContext;
 
@@ -235,12 +236,10 @@ public class GalleryUtils {
     public static boolean isCameraAvailable(Context context) {
         if (sCameraAvailableInitialized) return sCameraAvailable;
         PackageManager pm = context.getPackageManager();
-        ComponentName name = new ComponentName(context, CAMERA_LAUNCHER_NAME);
-        int state = pm.getComponentEnabledSetting(name);
+        Intent cameraIntent = IntentHelper.getCameraIntent(context);
+        List<ResolveInfo> apps = pm.queryIntentActivities(cameraIntent, 0);
         sCameraAvailableInitialized = true;
-        sCameraAvailable =
-           (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT)
-           || (state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+        sCameraAvailable = !apps.isEmpty();
         return sCameraAvailable;
     }
 
index 13f69eb..8aebfc1 100644 (file)
@@ -22,7 +22,7 @@ public class IntentHelper {
 
     public static Intent getCameraIntent(Context context) {
         return new Intent(Intent.ACTION_MAIN)
-            .setClassName("com.android.camera2", "com.android.camera.CameraActivity");
+            .setClassName("com.android.camera2", "com.android.camera.CameraLauncher");
     }
 
     public static Intent getGalleryIntent(Context context) {