mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-11-01 23:33:54 +01:00
Merge branch 'master' of https://github.com/siva-subramaniam-v/apps-android-commons into gradle-version-upgrade
This commit is contained in:
commit
c4d4cbeae2
73 changed files with 801 additions and 186 deletions
|
|
@ -44,10 +44,11 @@ public class FilePicker implements Constants {
|
|||
return uri;
|
||||
}
|
||||
|
||||
private static Intent createGalleryIntent(@NonNull Context context, int type) {
|
||||
private static Intent createGalleryIntent(@NonNull Context context, int type,
|
||||
boolean isGetContentPickerPreferred) {
|
||||
// storing picked image type to shared preferences
|
||||
storeType(context, type);
|
||||
return plainGalleryPickerIntent()
|
||||
return plainGalleryPickerIntent(isGetContentPickerPreferred)
|
||||
.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, configuration(context).allowsMultiplePickingInGallery());
|
||||
}
|
||||
|
||||
|
|
@ -103,8 +104,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) {
|
||||
Intent intent = createGalleryIntent(activity, type);
|
||||
public static void openGallery(Activity activity, int type, boolean isGetContentPickerPreferred) {
|
||||
Intent intent = createGalleryIntent(activity, type, isGetContentPickerPreferred);
|
||||
activity.startActivityForResult(intent, RequestCodes.PICK_PICTURE_FROM_GALLERY);
|
||||
}
|
||||
|
||||
|
|
@ -198,8 +199,40 @@ public class FilePicker implements Constants {
|
|||
return data == null || (data.getData() == null && data.getClipData() == null);
|
||||
}
|
||||
|
||||
private static Intent plainGalleryPickerIntent() {
|
||||
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
private static Intent plainGalleryPickerIntent(boolean isGetContentPickerPreferred) {
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
* This permission check, however, was insufficient to fix location-loss in
|
||||
* the regular selector in Contributions fragment and Nearby fragment,
|
||||
* especially on some devices running Android 13 that use the new Photo Picker by default.
|
||||
*
|
||||
* New Photo Picker: https://developer.android.com/training/data-storage/shared/photopicker
|
||||
*
|
||||
* The new Photo Picker introduced by Android redacts location tags from EXIF metadata.
|
||||
* 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:
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
Intent intent;
|
||||
if (isGetContentPickerPreferred) {
|
||||
intent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
} else {
|
||||
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
|
||||
}
|
||||
intent.setType("image/*");
|
||||
return intent;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue