Sharing: request permission

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java | 25 +++
1 file changed, 24 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java 🔗

@@ -2,6 +2,7 @@ package eu.siacs.conversations.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;
@@ -33,7 +34,9 @@ import eu.siacs.conversations.xmpp.jid.Jid;
 
 public class ShareWithActivity extends XmppActivity implements XmppConnectionService.OnConversationUpdate {
 
+	private static final int REQUEST_STORAGE_PERMISSION = 0x733f32;
 	private boolean mReturnToPrevious = false;
+	private Conversation mPendingConversation = null;
 
 	@Override
 	public void onConversationUpdate() {
@@ -144,6 +147,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);
@@ -156,7 +175,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
 		setContentView(R.layout.share_with);
 		setTitle(getString(R.string.title_activity_sharewith));
 
-		mListView = (ListView) findViewById(R.id.choose_conversation_list);
+		mListView = findViewById(R.id.choose_conversation_list);
 		mAdapter = new ConversationAdapter(this, this.mConversations);
 		mListView.setAdapter(mAdapter);
 		mListView.setOnItemClickListener(new OnItemClickListener() {
@@ -274,6 +293,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();