diff --git a/cardshowviewtakenpicturesview/build.gradle b/cardshowviewtakenpicturesview/build.gradle index 5f48351..4e7e6c0 100644 --- a/cardshowviewtakenpicturesview/build.gradle +++ b/cardshowviewtakenpicturesview/build.gradle @@ -45,7 +45,7 @@ dependencies { implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.0' - implementation 'androidx.exifinterface:exifinterface:1.3.2' + implementation 'androidx.exifinterface:exifinterface:1.3.3' // Support for java 8 features implementation 'com.annimon:stream:1.1.3' diff --git a/cardshowviewtakenpicturesview/src/main/AndroidManifest.xml b/cardshowviewtakenpicturesview/src/main/AndroidManifest.xml index 5ae04dd..80c0354 100644 --- a/cardshowviewtakenpicturesview/src/main/AndroidManifest.xml +++ b/cardshowviewtakenpicturesview/src/main/AndroidManifest.xml @@ -19,6 +19,16 @@ android:configChanges="screenSize|orientation|screenLayout|navigation" android:theme="@style/AppThemeCamera" /> + + + + diff --git a/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/camera/CameraFragment.java b/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/camera/CameraFragment.java index 3a322b4..a65661c 100644 --- a/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/camera/CameraFragment.java +++ b/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/camera/CameraFragment.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; +import android.os.FileUtils; import android.os.Handler; import android.provider.MediaStore; import android.view.LayoutInflater; @@ -543,13 +544,13 @@ private Integer getColor(Context context, Integer colorId) { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_IMAGE_LIST_GALLERY_RESULT && resultCode == Activity.RESULT_OK) { - if (requestCode == REQUEST_IMAGE_LIST_GALLERY_RESULT && resultCode == Activity.RESULT_OK && data != null) { - if (data.getData() != null) { + if ((data != null) && (data.getData() != null)) { Uri imageUri = data.getData(); - - generateImageCallback(imageUri); + if (imageUri.getLastPathSegment() != null) { + generateImageCallback(imageUri); + } } else if (data.getClipData() != null) { int count = data.getClipData().getItemCount(); diff --git a/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/utils/ImageGenerator.java b/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/utils/ImageGenerator.java index 895c5d7..319ee5a 100644 --- a/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/utils/ImageGenerator.java +++ b/cardshowviewtakenpicturesview/src/main/java/br/com/stant/libraries/cardshowviewtakenpicturesview/utils/ImageGenerator.java @@ -1,7 +1,6 @@ package br.com.stant.libraries.cardshowviewtakenpicturesview.utils; import android.content.Context; -import android.database.Cursor; import android.graphics.Bitmap; import android.media.MediaScannerConnection; import android.net.Uri; @@ -12,6 +11,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; @@ -85,10 +85,7 @@ public void generateCardShowTakenImageFromImageGallery(Uri data, Integer photoTy CardShowTakenCompressedCallback cardShowTakenCompressedCallback) { try { final Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), data); - String photoPath = getRealPathFromURI(mContext, data); - if (photoPath.isEmpty()) { - photoPath = getRealPathFromURI(mContext, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - } + InputStream photoPath = mContext.getContentResolver().openInputStream(data); final Integer desiredSize = 1400; final Bitmap scaledBitmap = rotateBitmapBasedOnExifInterface(photoPath, @@ -101,36 +98,7 @@ public void generateCardShowTakenImageFromImageGallery(Uri data, Integer photoTy } } - private String getRealPathFromURI(Context context, Uri contentUri) { - final Cursor cursor = context.getContentResolver().query(contentUri, null, null, - null, null); - - String photoPath = getRealPathFromCursor(cursor, "filePath"); - if (photoPath.isEmpty()) { - photoPath = getRealPathFromCursor(cursor, "_data"); - } - - return photoPath; - } - - private String getRealPathFromCursor(Cursor cursor, String columnName) { - if (cursor != null) { - if (cursor.moveToFirst()) { - int column_index = cursor.getColumnIndex(columnName); - if (column_index >= 0) { - return cursor.getString(column_index); - } else { - return ""; - } - } else { - return ""; - } - } else { - return ""; - } - } - - private Bitmap rotateBitmapBasedOnExifInterface(String photoPath, Bitmap bitmap) { + private Bitmap rotateBitmapBasedOnExifInterface(InputStream photoPath, Bitmap bitmap) { ExifInterface ei; try { if (photoPath == null) { @@ -145,7 +113,6 @@ private Bitmap rotateBitmapBasedOnExifInterface(String photoPath, Bitmap bitmap) switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_90: - case ExifInterface.ORIENTATION_UNDEFINED: rotatedBitmap = rotateImage(bitmap, 270); break; case ExifInterface.ORIENTATION_ROTATE_180: diff --git a/cardshowviewtakenpicturesview/src/main/res/xml/provider_paths.xml b/cardshowviewtakenpicturesview/src/main/res/xml/provider_paths.xml new file mode 100644 index 0000000..b1b16c8 --- /dev/null +++ b/cardshowviewtakenpicturesview/src/main/res/xml/provider_paths.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file