Skip to content

Commit

Permalink
update main app to work with new storageprovider model
Browse files Browse the repository at this point in the history
  • Loading branch information
n8fr8 committed Mar 14, 2024
1 parent 41dd239 commit 314c8b7
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 235 deletions.
66 changes: 66 additions & 0 deletions app/src/main/java/Utils.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package org.witness.proofmode

import android.content.ContentResolver
import android.content.ContentUris
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri
import android.os.Build
import android.provider.MediaStore
import android.text.TextUtils
import android.util.Size
import android.webkit.MimeTypeMap
import java.io.File


/**
Expand Down Expand Up @@ -39,4 +43,66 @@ fun getVideoThumbnail(context: Context, videoUri: Uri): Bitmap {
}


}

fun getRealUri(contentUri: Uri?): Uri? {
val unusablePath = contentUri!!.path
val startIndex = unusablePath!!.indexOf("external/")
val endIndex = unusablePath.indexOf("/ACTUAL")
return if (startIndex != -1 && endIndex != -1) {
val embeddedPath = unusablePath.substring(startIndex, endIndex)
val builder = contentUri.buildUpon()
builder.path(embeddedPath)
builder.authority("media")
builder.build()
} else contentUri
}

fun getFileNameFromUri(contentResolver: ContentResolver, uri: Uri?): String? {
val projection = arrayOfNulls<String>(2)
val mimeType = contentResolver.getType(uri!!)
val mimeTypeMap = MimeTypeMap.getSingleton()
val fileExt = mimeTypeMap.getExtensionFromMimeType(mimeType)
if (mimeType != null) {
if (mimeType.startsWith("image")) {
projection[0] = MediaStore.Images.Media.DATA
projection[1] = MediaStore.Images.Media.DISPLAY_NAME
} else if (mimeType.startsWith("video")) {
projection[0] = MediaStore.Video.Media.DATA
projection[1] = MediaStore.Video.Media.DISPLAY_NAME
} else if (mimeType.startsWith("audio")) {
projection[0] = MediaStore.Audio.Media.DATA
projection[1] = MediaStore.Audio.Media.DISPLAY_NAME
}
} else {
projection[0] = MediaStore.Images.Media.DATA
projection[1] = MediaStore.Images.Media.DISPLAY_NAME
}
val cursor = contentResolver.query(getRealUri(uri)!!, projection, null, null, null)
val result = false

//default name with file extension
var fileName = uri.lastPathSegment
if (fileExt != null && fileName!!.indexOf(".") == -1) fileName += ".$fileExt"
if (cursor != null) {
if (cursor.count > 0) {
cursor.moveToFirst()
try {
var columnIndex = cursor.getColumnIndexOrThrow(projection[0])
val path = cursor.getString(columnIndex)
if (path != null) {
val fileMedia = File(path)
if (fileMedia.exists()) fileName = fileMedia.name
}
if (TextUtils.isEmpty(fileName)) {
columnIndex = cursor.getColumnIndexOrThrow(projection[1])
fileName = cursor.getString(columnIndex)
}
} catch (_: IllegalArgumentException) {
}
}
cursor.close()
}
if (TextUtils.isEmpty(fileName)) fileName = uri.lastPathSegment
return fileName
}
Loading

0 comments on commit 314c8b7

Please sign in to comment.