Skip to content

Commit a7922ca

Browse files
authored
Merge pull request #1 from BasemNasr/elasil
fix get file from download issue
2 parents acf21ff + 119c30a commit a7922ca

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

EasyMediaPicker/src/main/java/com/bn/easypicker/EasyPicker.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -408,9 +408,8 @@ class EasyPicker(
408408
resulting.add(
409409
FileResource(
410410
uri = imageUri,
411-
path = FilesVersionUtil.getRealPathFromUri(
412-
mContext,
413-
imageUri
411+
path = FilesVersionUtil.getRealPathFromURIForAndroid10Issue(
412+
imageUri,mContext
414413
)
415414
)
416415
)

EasyMediaPicker/src/main/java/com/bn/easypicker/mutils/FilesVersionUtil.kt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ import android.net.Uri
88
import android.os.Environment
99
import android.provider.DocumentsContract
1010
import android.provider.MediaStore
11+
import android.provider.OpenableColumns
1112
import android.util.Log
1213
import android.webkit.MimeTypeMap
1314
import java.io.File
15+
import java.io.FileOutputStream
16+
import java.io.InputStream
1417

1518

1619
object FilesVersionUtil {
@@ -120,6 +123,47 @@ object FilesVersionUtil {
120123
cursor?.close()
121124
}
122125
}
126+
127+
fun getRealPathFromURIForAndroid10Issue(uri: Uri, context: Context): String? {
128+
var path: String? = null
129+
var returnCursor: Cursor? = null
130+
131+
try {
132+
returnCursor = context.contentResolver.query(uri, null, null, null, null)
133+
if (returnCursor != null && returnCursor.moveToFirst()) {
134+
val nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
135+
val name = returnCursor.getString(nameIndex)
136+
val file = File(context.filesDir, name)
137+
try {
138+
val inputStream: InputStream? = context.contentResolver.openInputStream(uri)
139+
val outputStream = FileOutputStream(file)
140+
var read = 0
141+
val maxBufferSize = 1 * 1024 * 1024
142+
val bytesAvailable: Int = inputStream?.available() ?: 0
143+
val bufferSize = Math.min(bytesAvailable, maxBufferSize)
144+
val buffers = ByteArray(bufferSize)
145+
while (inputStream?.read(buffers).also {
146+
if (it != null) {
147+
read = it
148+
}
149+
} != -1) {
150+
outputStream.write(buffers, 0, read)
151+
}
152+
Log.e("File Size", "Size " + file.length())
153+
inputStream?.close()
154+
outputStream.close()
155+
Log.e("File Path", "Path " + file.path)
156+
path = file.path
157+
} catch (e: Exception) {
158+
Log.e("Exception", e.message!!)
159+
}
160+
}
161+
} finally {
162+
returnCursor?.close()
163+
}
164+
return path
165+
}
166+
123167
fun File.getMediaDuration(context: Context): Long {
124168
if (!exists()) return 0
125169
val retriever = MediaMetadataRetriever()

app/src/main/java/com/bn/easypicker/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ class MainActivity : AppCompatActivity(), OnCaptureMedia {
118118
}
119119
PICK_FILE -> {
120120
files?.let {
121+
122+
121123
Log.v("Pattthhh","${files[0].uri}")
122124
findViewById<AppCompatTextView>(R.id.tvTitle).text = files[0].path
123125
}

0 commit comments

Comments
 (0)