fun getRealFilePath(context: Context, uri: Uri?): String? {
if (null == uri) return null
val scheme = uri.scheme
return when (scheme) {
null -> uri.path
ContentResolver.SCHEME_FILE -> uri.path
ContentResolver.SCHEME_CONTENT -> {
val projection = arrayOf(MediaStore.Images.ImageColumns.DATA)
val cursor = context.contentResolver.query(uri, projection, null, null, null)
cursor?.use {
var data: String? = null
if (it.moveToFirst()) {
cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA).takeIf { it > -1 }?.apply {
data = cursor.getString(this)
}
}
data
}
}
else -> null
}
}