2323
2424package io .flutter .plugins .imagepicker ;
2525
26+ import android .content .ContentResolver ;
2627import android .content .Context ;
2728import android .net .Uri ;
29+ import android .webkit .MimeTypeMap ;
2830import java .io .File ;
2931import java .io .FileOutputStream ;
3032import java .io .IOException ;
@@ -39,7 +41,7 @@ String getPathFromUri(final Context context, final Uri uri) {
3941 OutputStream outputStream = null ;
4042 boolean success = false ;
4143 try {
42- String extension = getImageExtension (uri );
44+ String extension = getImageExtension (context , uri );
4345 inputStream = context .getContentResolver ().openInputStream (uri );
4446 file = File .createTempFile ("image_picker" , extension , context .getCacheDir ());
4547 file .deleteOnExit ();
@@ -67,13 +69,17 @@ String getPathFromUri(final Context context, final Uri uri) {
6769 }
6870
6971 /** @return extension of image with dot, or default .jpg if it none. */
70- private static String getImageExtension (Uri uriImage ) {
72+ private static String getImageExtension (Context context , Uri uriImage ) {
7173 String extension = null ;
7274
7375 try {
74- String imagePath = uriImage .getPath ();
75- if (imagePath != null && imagePath .lastIndexOf ("." ) != -1 ) {
76- extension = imagePath .substring (imagePath .lastIndexOf ("." ) + 1 );
76+ if (uriImage .getScheme ().equals (ContentResolver .SCHEME_CONTENT )) {
77+ final MimeTypeMap mime = MimeTypeMap .getSingleton ();
78+ extension = mime .getExtensionFromMimeType (context .getContentResolver ().getType (uriImage ));
79+ } else {
80+ extension =
81+ MimeTypeMap .getFileExtensionFromUrl (
82+ Uri .fromFile (new File (uriImage .getPath ())).toString ());
7783 }
7884 } catch (Exception e ) {
7985 extension = null ;
0 commit comments