diff --git a/app/src/main/java/gun0912/tedimagepicker/sample/MainActivity.kt b/app/src/main/java/gun0912/tedimagepicker/sample/MainActivity.kt index 653fdc7..c047ce9 100644 --- a/app/src/main/java/gun0912/tedimagepicker/sample/MainActivity.kt +++ b/app/src/main/java/gun0912/tedimagepicker/sample/MainActivity.kt @@ -15,6 +15,8 @@ import gun0912.tedimagepicker.builder.TedImagePicker import gun0912.tedimagepicker.builder.TedRxImagePicker import gun0912.tedimagepicker.sample.databinding.ActivityMainBinding import gun0912.tedimagepicker.sample.databinding.ItemImageBinding +import gun0912.tedimagepicker.util.ToastUtil.context +import gun0912.tedimagepicker.util.fetchImage class MainActivity : AppCompatActivity() { @@ -26,6 +28,7 @@ class MainActivity : AppCompatActivity() { binding = DataBindingUtil.setContentView(this, R.layout.activity_main) setNormalSingleButton() + setNormalSingleButtonFile() setNormalMultiButton() setRxSingleButton() setRxMultiButton() @@ -40,6 +43,11 @@ class MainActivity : AppCompatActivity() { } } + private fun setNormalSingleButtonFile() { + TedImagePicker.with(this) + .start { uri -> showSingleImageToFile(uri) } + } + private fun setNormalMultiButton() { binding.btnNormalMulti.setOnClickListener { TedImagePicker.with(this) @@ -88,6 +96,12 @@ class MainActivity : AppCompatActivity() { } + private fun showSingleImageToFile(uri: Uri) { + + suspend { fetchImage(context).let { uri.toString() } } + + } + private fun showMultiImage(uriList: List) { this.selectedUriList = uriList diff --git a/tedimagepicker/src/main/java/gun0912/tedimagepicker/util/UriConverterFileUtil.kt b/tedimagepicker/src/main/java/gun0912/tedimagepicker/util/UriConverterFileUtil.kt new file mode 100644 index 0000000..043e698 --- /dev/null +++ b/tedimagepicker/src/main/java/gun0912/tedimagepicker/util/UriConverterFileUtil.kt @@ -0,0 +1,34 @@ +package gun0912.tedimagepicker.util + +import android.content.Context +import android.database.Cursor +import android.net.Uri +import android.provider.MediaStore +import androidx.loader.content.CursorLoader +import gun0912.tedimagepicker.builder.TedImagePicker +import gun0912.tedimagepicker.builder.type.MediaType +import java.io.File +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine + +suspend fun fetchImage(context: Context): File? = suspendCoroutine { + TedImagePicker.with(context) + .mediaType(MediaType.IMAGE) + .showTitle(false) + .cancelListener { it.resume(null) } + .errorListener { _ -> it.resume(null) } + .start { uri -> + it.resume(File(getRealPathFromURI(uri, context)!!)) + } +} + +private fun getRealPathFromURI(uri: Uri, context: Context): String? { + val proj = arrayOf(MediaStore.Images.Media.DATA) + val loader = CursorLoader(context, uri, proj, null, null, null) + val cursor: Cursor = loader.loadInBackground()!! + val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA) + cursor.moveToFirst() + val result = cursor.getString(columnIndex) + cursor.close() + return result +} \ No newline at end of file