From e6ef53429d4d2306ec34a553943041319979f380 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 17 Jun 2013 22:21:36 +0000 Subject: [PATCH] bug 47671 -- don't show crashy photo button if no camera present We were crashing when trying to take a photo if no camera was present on the device, since no activity can be found for the camera intent and an exception is thrown. Work around this by simply checking if the device has a camera via the package manager feature checks, and hiding the menu item if relevant. GitHub: https://github.com/wikimedia/apps-android-commons/pull/13 Change-Id: I635946ed32cf768917db4a8dff0058061e45e6ec --- .../main/java/org/wikimedia/commons/CommonsApplication.java | 5 +++++ .../commons/contributions/ContributionsListFragment.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java b/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java index d6e9812ac..b9492ddaf 100644 --- a/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java +++ b/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java @@ -183,5 +183,10 @@ public class CommonsApplication extends Application { } } + public boolean deviceHasCamera() { + PackageManager pm = getPackageManager(); + return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) || + pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT); + } } diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java index 8ffbaa4d5..101f4eedc 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java @@ -266,6 +266,11 @@ public class ContributionsListFragment extends SherlockFragment { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); // See http://stackoverflow.com/a/8495697/17865 inflater.inflate(R.menu.fragment_contributions_list, menu); + + CommonsApplication app = (CommonsApplication)getActivity().getApplicationContext(); + if (!app.deviceHasCamera()) { + menu.findItem(R.id.menu_from_camera).setEnabled(false); + } } @Override