From 207521ef7391d456ce8ec24c796cd3abf0ececa5 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 21 Jul 2016 17:45:09 +1200 Subject: [PATCH] Add runtime permission checking to MultipleShareActivity --- .../commons/upload/MultipleShareActivity.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java index 6baad2802..2b69bee85 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java @@ -2,12 +2,16 @@ package fr.free.nrw.commons.upload; import java.util.*; +import android.Manifest; import android.app.*; import android.content.*; +import android.content.pm.PackageManager; import android.database.DataSetObserver; import android.net.*; import android.os.*; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.*; import android.view.inputmethod.InputMethodManager; @@ -77,6 +81,29 @@ public class MultipleShareActivity } public void OnMultipleUploadInitiated() { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //Check for Storage permission that is required for upload. Do not allow user to proceed without permission, otherwise will crash + if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); + } else { + multipleUploadBegins(); + } + } else { + multipleUploadBegins(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + if (requestCode == 1) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + multipleUploadBegins(); + } + } + } + + private void multipleUploadBegins() { final ProgressDialog dialog = new ProgressDialog(MultipleShareActivity.this); dialog.setIndeterminate(false); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); @@ -117,8 +144,6 @@ public class MultipleShareActivity .commit(); } - - public void onCategoriesSave(ArrayList categories) { if(categories.size() > 0) { ContentProviderClient client = getContentResolver().acquireContentProviderClient(ModificationsContentProvider.AUTHORITY);