create file from uri
File(uri.getPath());
how to get file type from uri kotlin
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// my_button = id in activity_main layout
// need for call intent
my_button.setOnclickListener{
val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "*/*"
}
startActivityForResult(intent, PICK_ANY_FILE)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
super.onActivityResult(requestCode, resultCode, resultData)
if (resultCode == RESULT_OK && resultCode == PICK_ANY_FILE) {
if (resultData != null) {
resultData.data?.also { uri ->
// usage for function
println( getFileExtension(uri)!! )
}
}
}
}
companion object{
const val PICK_ANY_FILE = 100
/* get actual file name or extension */
fun Context.getFileExtension(uri: Uri): String? = when (uri.scheme) {
// get file extension
ContentResolver.SCHEME_FILE -> File(uri.path!!).extension
// get actual name of file
//ContentResolver.SCHEME_FILE -> File(uri.path!!).name
ContentResolver.SCHEME_CONTENT -> getCursorContent(uri)
else -> null
}
private fun Context.getCursorContent(uri: Uri): String? = try {
contentResolver.query(uri, null, null, null, null)?.let { cursor ->
cursor.run {
val mimeTypeMap: MimeTypeMap = MimeTypeMap.getSingleton()
if (moveToFirst()) mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri))
// case for get actual name of file
//if (moveToFirst()) getString(getColumnIndex(OpenableColumns.DISPLAY_NAME))
else null
}.also { cursor.close() }
}
} catch (e: Exception) {
null
}
}
}
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us