From 21252aad0f3917e08173cdde638f7c210ae146bd Mon Sep 17 00:00:00 2001 From: Yannick Verdie Date: Mon, 15 Mar 2021 14:13:03 +0000 Subject: [PATCH] Request storage permission when adding additional media. --- .../mediasend/MediaSendActivity.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java index d0b5f43d05..fc13ee7477 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java @@ -637,21 +637,29 @@ public class MediaSendActivity extends PassphraseRequiredActivity implements Med private void onAddMediaClicked(@NonNull String bucketId) { - hud.hideCurrentInput(composeText); + Permissions.with(this) + .request(Manifest.permission.READ_EXTERNAL_STORAGE) + .ifNecessary() + .withPermanentDenialDialog(getString(R.string.AttachmentKeyboard_Signal_needs_permission_to_show_your_photos_and_videos)) + .onAllGranted(() -> { + hud.hideCurrentInput(composeText); - // TODO: Get actual folder title somehow - MediaPickerFolderFragment folderFragment = MediaPickerFolderFragment.newInstance(this, recipient != null ? recipient.get() : null); - MediaPickerItemFragment itemFragment = MediaPickerItemFragment.newInstance(bucketId, "", viewModel.getMaxSelection()); + // TODO: Get actual folder title somehow + MediaPickerFolderFragment folderFragment = MediaPickerFolderFragment.newInstance(this, recipient != null ? recipient.get() : null); + MediaPickerItemFragment itemFragment = MediaPickerItemFragment.newInstance(bucketId, "", viewModel.getMaxSelection()); - getSupportFragmentManager().beginTransaction() - .replace(R.id.mediasend_fragment_container, folderFragment, TAG_FOLDER_PICKER) - .addToBackStack(null) - .commit(); + getSupportFragmentManager().beginTransaction() + .replace(R.id.mediasend_fragment_container, folderFragment, TAG_FOLDER_PICKER) + .addToBackStack(null) + .commit(); - getSupportFragmentManager().beginTransaction() - .replace(R.id.mediasend_fragment_container, itemFragment, TAG_ITEM_PICKER) - .addToBackStack(null) - .commit(); + getSupportFragmentManager().beginTransaction() + .replace(R.id.mediasend_fragment_container, itemFragment, TAG_ITEM_PICKER) + .addToBackStack(null) + .commit(); + }) + .onAnyDenied(() -> Toast.makeText(MediaSendActivity.this, R.string.AttachmentKeyboard_Signal_needs_permission_to_show_your_photos_and_videos, Toast.LENGTH_LONG).show()) + .execute(); } private void onNoMediaAvailable() {