From 4207022dee518747a5c1441a06e182bd51d9a5d3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 15 Jul 2016 00:32:34 +1200 Subject: [PATCH] Add check to gallery --- .../ContributionsListFragment.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index eebf6dd6f..b1adc296b 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -1,11 +1,15 @@ package fr.free.nrw.commons.contributions; +import android.Manifest; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -96,7 +100,11 @@ public class ContributionsListFragment extends Fragment { case R.id.menu_from_gallery: //FIXME: Add permission request here. Only startActivity if permission has been granted //Gallery crashes before reach ShareActivity screen so must implement check here - controller.startGalleryPick(); + if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this.getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); + } else { + controller.startGalleryPick(); + } return true; case R.id.menu_from_camera: controller.startCameraCapture(); @@ -131,6 +139,21 @@ public class ContributionsListFragment extends Fragment { } } + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + // 1 = Storage allowed when gallery selected + case 1: { + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + controller.startGalleryPick(); + } + return; + } + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); // See http://stackoverflow.com/a/8495697/17865