diff --git a/res/values/strings.xml b/res/values/strings.xml index 20f916e495..5f40643435 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -493,6 +493,8 @@ Message to %s Message Select recipients + Signal needs access to your contacts in order to display them. + Signal needs Contacts permission in order to show your contacts, but it has been permanently denied. Please continue to app settings, select \"Permissions\", and enable \"Contacts\". You can\'t share more than %d item. You can\'t share more than %d items. diff --git a/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java b/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java index 1afc6f196c..a95f7b5225 100644 --- a/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java +++ b/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java @@ -687,20 +687,27 @@ public class MediaSendActivity extends PassphraseRequiredActionBarActivity imple hud.hideCurrentInput(composeText); } - Fragment contactFragment = CameraContactSelectionFragment.newInstance(); - Fragment editorFragment = getSupportFragmentManager().findFragmentByTag(TAG_SEND); + Permissions.with(this) + .request(Manifest.permission.READ_CONTACTS) + .ifNecessary() + .withPermanentDenialDialog(getString(R.string.MediaSendActivity_signal_needs_contacts_permission_in_order_to_show_your_contacts_but_it_has_been_permanently_denied)) + .onAllGranted(() -> { + Fragment contactFragment = CameraContactSelectionFragment.newInstance(); + Fragment editorFragment = getSupportFragmentManager().findFragmentByTag(TAG_SEND); - if (editorFragment == null) { - throw new AssertionError("No editor fragment available!"); - } + if (editorFragment == null) { + throw new AssertionError("No editor fragment available!"); + } - - getSupportFragmentManager().beginTransaction() - .setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out) - .add(R.id.mediasend_fragment_container, contactFragment, TAG_CONTACTS) - .hide(editorFragment) - .addToBackStack(null) - .commit(); + getSupportFragmentManager().beginTransaction() + .setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out) + .add(R.id.mediasend_fragment_container, contactFragment, TAG_CONTACTS) + .hide(editorFragment) + .addToBackStack(null) + .commit(); + }) + .onAnyDenied(() -> Toast.makeText(MediaSendActivity.this, R.string.MediaSendActivity_signal_needs_access_to_your_contacts, Toast.LENGTH_LONG).show()) + .execute(); } private Fragment getOrCreateCameraFragment() {