From 4842181235241bdc362cfdce17c4ef5b3d2b9572 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Mon, 4 Sep 2017 20:49:02 +0200 Subject: request storage permission when sending gif --- .../de/pixart/messenger/ui/ConversationActivity.java | 6 ++++++ .../de/pixart/messenger/ui/ConversationFragment.java | 18 ++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui') diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index bc2e8622e..ef864669d 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -104,6 +104,7 @@ public class ConversationActivity extends XmppActivity public static final int REQUEST_TRUST_KEYS_TEXT = 0x0208; public static final int REQUEST_TRUST_KEYS_MENU = 0x0209; public static final int REQUEST_START_DOWNLOAD = 0x0210; + public static final int REQUEST_ADD_EDITOR_CONTENT = 0x0211; public static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301; public static final int ATTACHMENT_CHOICE_TAKE_FROM_CAMERA = 0x0302; public static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303; @@ -144,6 +145,7 @@ public class ConversationActivity extends XmppActivity private AtomicBoolean mRedirected = new AtomicBoolean(false); private Pair mPostponedActivityResult; private boolean mUnprocessedNewIntent = false; + public Uri mPendingEditorContent = null; private boolean showLastSeen = false; long FirstStartTime = -1; @@ -814,6 +816,10 @@ public class ConversationActivity extends XmppActivity if (this.mPendingDownloadableMessage != null) { startDownloadable(this.mPendingDownloadableMessage); } + } else if (requestCode == REQUEST_ADD_EDITOR_CONTENT) { + if (this.mPendingEditorContent != null) { + attachImageToConversation(this.mPendingEditorContent); + } } else { attachFile(requestCode); } diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index 7dab99278..7832470a4 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -318,16 +318,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } } - // send the image - activity.attachImageToConversation(inputContentInfo.getContentUri()); - - // TODO: revoke permissions? - // since uploading an image is async its tough to wire a callback to when - // the image has finished uploading. - // According to the docs: "calling IC#releasePermission() is just to be a - // good citizen. Even if we failed to call that method, the system would eventually revoke - // the permission sometime after inputContentInfo object gets garbage-collected." - // See: https://developer.android.com/samples/CommitContentSampleApp/src/com.example.android.commitcontent.app/MainActivity.html#l164 + if (activity.hasStoragePermission(ConversationActivity.REQUEST_ADD_EDITOR_CONTENT)) { + activity.attachImageToConversation(inputContentInfo.getContentUri()); + } else { + activity.mPendingEditorContent = inputContentInfo.getContentUri(); + } return true; } }; @@ -470,7 +465,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_conversation, container, false); view.setOnClickListener(null); - String[] allImagesMimeType = {"image/*"}; mEditMessage = (EditMessage) view.findViewById(R.id.textinput); mEditMessage.setOnClickListener(new OnClickListener() { @@ -482,7 +476,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } }); mEditMessage.setOnEditorActionListener(mEditorActionListener); - mEditMessage.setRichContentListener(allImagesMimeType, mEditorContentListener); + mEditMessage.setRichContentListener(new String[]{"image/*"}, mEditorContentListener); mSendButton = (ImageButton) view.findViewById(R.id.textSendButton); mSendButton.setOnClickListener(this.mSendButtonListener); -- cgit v1.2.3