From a7f3d7b8b515e6507aacc6b873366a5ad920fe4d Mon Sep 17 00:00:00 2001 From: Hoong Jhang Chin Date: Sat, 26 Sep 2020 18:47:19 +0800 Subject: [PATCH] fix for https://github.com/esafirm/android-image-picker/issues/280 use MediaStore to support Android Q --- .../features/camera/DefaultCameraModule.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/camera/DefaultCameraModule.java b/imagepicker/src/main/java/com/esafirm/imagepicker/features/camera/DefaultCameraModule.java index 1e49935f..b9e1a2bf 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/features/camera/DefaultCameraModule.java +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/camera/DefaultCameraModule.java @@ -1,9 +1,12 @@ package com.esafirm.imagepicker.features.camera; +import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.media.MediaScannerConnection; import android.net.Uri; +import android.os.Build; import android.provider.MediaStore; import com.esafirm.imagepicker.features.ImagePickerConfigFactory; @@ -30,18 +33,31 @@ public Intent getCameraIntent(Context context) { public Intent getCameraIntent(Context context, BaseConfig config) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File imageFile = ImagePickerUtils.createImageFile(config.getImageDirectory(), context); - if (imageFile != null) { - Context appContext = context.getApplicationContext(); - String providerName = String.format(Locale.ENGLISH, "%s%s", appContext.getPackageName(), ".imagepicker.provider"); - Uri uri = FileProvider.getUriForFile(appContext, providerName, imageFile); - currentImagePath = "file:" + imageFile.getAbsolutePath(); + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){ + ContentValues values = new ContentValues(); + values.put(MediaStore.Images.Media.DISPLAY_NAME, imageFile.getName()); + values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); + ContentResolver resolver = context.getContentResolver(); + Uri collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY); + Uri uri = resolver.insert(collection,values); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); + return intent; + }else{ + if (imageFile != null) { + Context appContext = context.getApplicationContext(); + String providerName = String.format(Locale.ENGLISH, "%s%s", appContext.getPackageName(), ".imagepicker.provider"); + Uri uri = FileProvider.getUriForFile(appContext, providerName, imageFile); + currentImagePath = "file:" + imageFile.getAbsolutePath(); + intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); - ImagePickerUtils.grantAppPermission(context, intent, uri); + ImagePickerUtils.grantAppPermission(context, intent, uri); - return intent; + return intent; + } + + return null; } - return null; } @Override