From 655edca0b7e7b6a364fc0e548754bfebd642c0a6 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 29 Oct 2017 19:58:26 +0100 Subject: Sharing: request permission --- .../de/pixart/messenger/ui/ShareWithActivity.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java index d269e4249..cba91d108 100644 --- a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java @@ -2,6 +2,7 @@ package de.pixart.messenger.ui; import android.app.PendingIntent; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.util.Log; @@ -35,7 +36,9 @@ import static java.lang.String.format; public class ShareWithActivity extends XmppActivity implements XmppConnectionService.OnConversationUpdate { + private static final int REQUEST_STORAGE_PERMISSION = 0x733f32; private boolean mReturnToPrevious = false; + private Conversation mPendingConversation = null; private static final String STATE_SHARING_IS_RUNNING = "state_sharing_is_running"; static boolean ContactChosen = false; static boolean IntentReceived = false; @@ -150,6 +153,22 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer } } + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + if (grantResults.length > 0) + if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if (requestCode == REQUEST_STORAGE_PERMISSION) { + if (this.mPendingConversation != null) { + share(this.mPendingConversation); + } else { + Log.d(Config.LOGTAG, "unable to find stored conversation"); + } + } + } else { + Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -311,6 +330,10 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer } private void share(final Conversation conversation) { + if (share.uris.size() != 0 && !hasStoragePermission(REQUEST_STORAGE_PERMISSION)) { + mPendingConversation = conversation; + return; + } final Account account = conversation.getAccount(); final XmppConnection connection = account.getXmppConnection(); final long max = connection == null ? -1 : connection.getFeatures().getMaxHttpUploadSize(); -- cgit v1.2.3