From f38d885a7829edec21e876e00f311beefeb2580e Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 11 Jan 2018 18:39:22 +1000 Subject: [PATCH] Copy camera capture code to DirectUpload.java --- .../free/nrw/commons/nearby/DirectUpload.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/DirectUpload.java b/app/src/main/java/fr/free/nrw/commons/nearby/DirectUpload.java index f9e6e49cb..4596fedd2 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/DirectUpload.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/DirectUpload.java @@ -11,11 +11,15 @@ import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; +import javax.inject.Inject; +import javax.inject.Named; + import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.ContributionController; import timber.log.Timber; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; +import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; class DirectUpload { @@ -25,6 +29,9 @@ class DirectUpload { private ContributionController controller; private Fragment fragment; + @Inject @Named("prefs") SharedPreferences prefs; + @Inject @Named("default_preferences") SharedPreferences defaultPrefs; + DirectUpload(String title, String desc, Fragment fragment, ContributionController controller) { this.title = title; this.desc = desc; @@ -41,6 +48,31 @@ class DirectUpload { editor.apply(); } + void initiateCameraUpload() { + boolean useExtStorage = defaultPrefs.getBoolean("useExternalStorage", true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && useExtStorage) { + if (ContextCompat.checkSelfPermission(fragment.getActivity(), WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + if (fragment.getActivity().shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE)) { + new AlertDialog.Builder(fragment.getActivity()) + .setMessage(fragment.getActivity().getString(R.string.write_storage_permission_rationale)) + .setPositiveButton("OK", (dialog, which) -> { + fragment.getActivity().requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE}, 3); + dialog.dismiss(); + }) + .setNegativeButton("Cancel", null) + .create() + .show(); + } else { + fragment.getActivity().requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE}, 3); + } + } else { + controller.startCameraCapture(); + } + } else { + controller.startCameraCapture(); + } + } + void initiateGalleryUpload() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(fragment.getActivity(), READ_EXTERNAL_STORAGE) != PERMISSION_GRANTED) {