Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 46bf637

Browse files
author
Miguel Ruivo
committed
[image_picker] Fixes an issue where videos could be wrongly picked with .jpg extension (#52419)
1 parent d3ccc34 commit 46bf637

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

packages/image_picker/image_picker/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.6.8
2+
3+
* Android: fixes an issue where videos could be wrongly picked with `.jpg` extension.
4+
15
## 0.6.7+3
26

37
* Fixes to the example app:

packages/image_picker/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/FileUtils.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@
2323

2424
package io.flutter.plugins.imagepicker;
2525

26+
import android.content.ContentResolver;
2627
import android.content.Context;
2728
import android.net.Uri;
29+
import android.webkit.MimeTypeMap;
30+
2831
import java.io.File;
2932
import java.io.FileOutputStream;
3033
import java.io.IOException;
@@ -39,7 +42,7 @@ String getPathFromUri(final Context context, final Uri uri) {
3942
OutputStream outputStream = null;
4043
boolean success = false;
4144
try {
42-
String extension = getImageExtension(uri);
45+
String extension = getImageExtension(context, uri);
4346
inputStream = context.getContentResolver().openInputStream(uri);
4447
file = File.createTempFile("image_picker", extension, context.getCacheDir());
4548
file.deleteOnExit();
@@ -67,13 +70,15 @@ String getPathFromUri(final Context context, final Uri uri) {
6770
}
6871

6972
/** @return extension of image with dot, or default .jpg if it none. */
70-
private static String getImageExtension(Uri uriImage) {
73+
private static String getImageExtension(Context context, Uri uriImage) {
7174
String extension = null;
7275

7376
try {
74-
String imagePath = uriImage.getPath();
75-
if (imagePath != null && imagePath.lastIndexOf(".") != -1) {
76-
extension = imagePath.substring(imagePath.lastIndexOf(".") + 1);
77+
if (uriImage.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
78+
final MimeTypeMap mime = MimeTypeMap.getSingleton();
79+
extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uriImage));
80+
} else {
81+
extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriImage.getPath())).toString());
7782
}
7883
} catch (Exception e) {
7984
extension = null;

packages/image_picker/image_picker/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: image_picker
22
description: Flutter plugin for selecting images from the Android and iOS image
33
library, and taking new pictures with the camera.
44
homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker
5-
version: 0.6.7+3
5+
version: 0.6.8
66

77
flutter:
88
plugin:

0 commit comments

Comments
 (0)