diff --git a/app/src/main/java/org/linphone/activities/MainActivity.java b/app/src/main/java/org/linphone/activities/MainActivity.java index a15109d27..ca1d15f46 100644 --- a/app/src/main/java/org/linphone/activities/MainActivity.java +++ b/app/src/main/java/org/linphone/activities/MainActivity.java @@ -477,6 +477,14 @@ public abstract class MainActivity extends LinphoneGenericActivity return granted == PackageManager.PERMISSION_GRANTED; } + public boolean checkPermissions(String[] permissions) { + boolean allGranted = true; + for (String permission : permissions) { + allGranted &= checkPermission(permission); + } + return allGranted; + } + public void requestPermissionIfNotGranted(String permission) { if (!checkPermission(permission)) { Log.i("[Permission] Requesting " + permission + " permission"); diff --git a/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java b/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java index a73ca269d..00f2465ab 100644 --- a/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java +++ b/app/src/main/java/org/linphone/contacts/ContactEditorFragment.java @@ -309,9 +309,18 @@ public class ContactEditorFragment extends Fragment { new OnClickListener() { @Override public void onClick(View view) { - pickImage(); - ((ContactsActivity) getActivity()) - .requestPermissionIfNotGranted(Manifest.permission.CAMERA); + ContactsActivity contactsActivity = ((ContactsActivity) getActivity()); + if (contactsActivity != null) { + String[] permissions = { + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.CAMERA + }; + if (contactsActivity.checkPermissions(permissions)) { + pickImage(); + } else { + contactsActivity.requestPermissionsIfNotGranted(permissions); + } + } } });