diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 00000000..23132d02 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/ImagePickerActivity.kt b/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/ImagePickerActivity.kt index 6f0e95bf..daf00213 100644 --- a/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/ImagePickerActivity.kt +++ b/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/ImagePickerActivity.kt @@ -65,11 +65,9 @@ class ImagePickerActivity : AppCompatActivity() { mCompressionProvider = CompressionProvider(this) // Retrieve Image Provider - val provider: ImageProvider? = - intent?.getSerializableExtra(ImagePicker.EXTRA_IMAGE_PROVIDER) as ImageProvider? // Create Gallery/Camera Provider - when (provider) { + when (intent?.getSerializableExtra(ImagePicker.EXTRA_IMAGE_PROVIDER)) { ImageProvider.GALLERY -> { mGalleryProvider = GalleryProvider(this) // Pick Gallery Image @@ -200,4 +198,16 @@ class ImagePickerActivity : AppCompatActivity() { setResult(ImagePicker.RESULT_ERROR, intent) finish() } + + /** + * @param data Intent that store data + * @param message Error message + */ + fun setErrorResult(data: Intent?, message: String) { + val intent = Intent() + intent.data = data?.data + intent.putExtra(ImagePicker.EXTRA_ERROR, message) + setResult(ImagePicker.RESULT_ERROR, intent) + finish() + } } diff --git a/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/provider/GalleryProvider.kt b/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/provider/GalleryProvider.kt index 2451fcf9..ad00f5f9 100644 --- a/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/provider/GalleryProvider.kt +++ b/imagepicker/src/main/kotlin/com/github/dhaval2404/imagepicker/provider/GalleryProvider.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.content.Intent import android.net.Uri import android.os.Bundle +import android.provider.DocumentsContract import com.github.dhaval2404.imagepicker.ImagePicker import com.github.dhaval2404.imagepicker.ImagePickerActivity import com.github.dhaval2404.imagepicker.R @@ -71,8 +72,12 @@ class GalleryProvider(activity: ImagePickerActivity) : private fun handleResult(data: Intent?) { val uri = data?.data if (uri != null) { - takePersistableUriPermission(uri) - activity.setImage(uri) + try { + takePersistableUriPermission(uri) + activity.setImage(uri) + } catch (e: Exception) { + activity.setErrorResult(data, e.message ?: "Unsupported file") + } } else { setError(R.string.error_failed_pick_gallery_image) }