diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.java index 0a01ef70c..18f307984 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.java @@ -79,8 +79,8 @@ public class ContributionController { */ private void initiateGalleryUpload(final Activity activity, final boolean allowMultipleUploads) { setPickerConfiguration(activity, allowMultipleUploads); - boolean isGetContentPickerPreferred = defaultKvStore.getBoolean("getContentPhotoPickerPref"); - FilePicker.openGallery(activity, 0, isGetContentPickerPreferred); + boolean openDocumentIntentPreferred = defaultKvStore.getBoolean("openDocumentPhotoPickerPref"); + FilePicker.openGallery(activity, 0, openDocumentIntentPreferred); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java index f05f6a7e7..31ea06e0d 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java @@ -47,10 +47,10 @@ public class FilePicker implements Constants { } private static Intent createGalleryIntent(@NonNull Context context, int type, - boolean isGetContentPickerPreferred) { + boolean openDocumentIntentPreferred) { // storing picked image type to shared preferences storeType(context, type); - return plainGalleryPickerIntent(isGetContentPickerPreferred) + return plainGalleryPickerIntent(openDocumentIntentPreferred) .putExtra(Intent.EXTRA_ALLOW_MULTIPLE, configuration(context).allowsMultiplePickingInGallery()); } @@ -106,8 +106,8 @@ public class FilePicker implements Constants { * * @param type Custom type of your choice, which will be returned with the images */ - public static void openGallery(Activity activity, int type, boolean isGetContentPickerPreferred) { - Intent intent = createGalleryIntent(activity, type, isGetContentPickerPreferred); + public static void openGallery(Activity activity, int type, boolean openDocumentIntentPreferred) { + Intent intent = createGalleryIntent(activity, type, openDocumentIntentPreferred); activity.startActivityForResult(intent, RequestCodes.PICK_PICTURE_FROM_GALLERY); } @@ -201,8 +201,8 @@ public class FilePicker implements Constants { return data == null || (data.getData() == null && data.getClipData() == null); } - private static Intent plainGalleryPickerIntent(boolean isGetContentPickerPreferred) { - /** + private static Intent plainGalleryPickerIntent(boolean openDocumentIntentPreferred) { + /* * Asking for ACCESS_MEDIA_LOCATION at runtime solved the location-loss issue * in the custom selector in Contributions fragment. * Detailed discussion: https://github.com/commons-app/apps-android-commons/issues/5015 @@ -217,8 +217,8 @@ public class FilePicker implements Constants { * Reported on the Google Issue Tracker: https://issuetracker.google.com/issues/243294058 * Status: Won't fix (Intended behaviour) * - * Switched intent from ACTION_GET_CONTENT to ACTION_OPEN_DOCUMENT - * (based on user's preference) as: + * Switched intent from ACTION_GET_CONTENT to ACTION_OPEN_DOCUMENT (by default; can + * be changed through the Setting page) as: * * ACTION_GET_CONTENT opens the 'best application' for choosing that kind of data * The best application is the new Photo Picker that redacts the location tags @@ -226,14 +226,15 @@ public class FilePicker implements Constants { * ACTION_OPEN_DOCUMENT, however, displays the various DocumentsProvider instances * installed on the device, letting the user interactively navigate through them. * - * So, this allows us to use the traditional file picker that does not redact location tags from EXIF. + * So, this allows us to use the traditional file picker that does not redact location tags + * from EXIF. * */ Intent intent; - if (isGetContentPickerPreferred) { - intent = new Intent(Intent.ACTION_GET_CONTENT); - } else { + if (openDocumentIntentPreferred) { intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + } else { + intent = new Intent(Intent.ACTION_GET_CONTENT); } intent.setType("image/*"); return intent; diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 0846fa9dc..c7654c5fe 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -153,10 +153,10 @@ public class SettingsFragment extends PreferenceFragmentCompat { return true; }); - Preference getContentPickerPreference = findPreference("getContentPhotoPickerPref"); - getContentPickerPreference.setOnPreferenceChangeListener( + Preference documentBasedPickerPreference = findPreference("openDocumentPhotoPickerPref"); + documentBasedPickerPreference.setOnPreferenceChangeListener( (preference, newValue) -> { - boolean isGetContentPickerTurnedOn = (boolean) newValue; + boolean isGetContentPickerTurnedOn = !(boolean) newValue; if (isGetContentPickerTurnedOn) { showLocationLossWarning(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b285b273e..9de575451 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -440,9 +440,9 @@ Upload your first media by tapping on the add button. Ends on: Display campaigns See the ongoing campaigns - Use GET_CONTENT photo picker - Disable if your pictures get uploaded without location - Please make sure that this new Android picker does not strip location from your pictures. + Use document based photo picker + The new Android photo picker has the potential to strip location information. Enable if you seem to be using it. + Turning this off could trigger the new Android photo picker. It has potential to strip location information.\n\nTap on \'Read more\' for more information. You won\'t see the campaigns anymore. However, you can re-enable this notification in Settings if you wish. This function requires network connection, please check your connection settings. diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 17360bd2e..f8e786df2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -72,10 +72,10 @@ android:title="@string/display_campaigns" /> + android:defaultValue="true" + android:key="openDocumentPhotoPickerPref" + android:summary="@string/open_document_photo_picker_explanation" + android:title="@string/open_document_photo_picker_title"/>