本文主要是介绍【Android】根据URI获取文件扩展名或MimeType,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于安卓中的URI
安卓中的URI包含多种格式,可以是文件,可以是媒体库资源,可以是Resource
也可以是网络地址,或其它资源标识
这里我们主要针对文件来源的URI
安卓中通过URI访问文件主要包括三种方式
- 文件路径
- 媒体库资源(背后仍然是文件,但无法直接访问)
- Resource资源
对于这三种不同的格式,我们要分别采取不同的解析方式
提取文件扩展名和MimeType
object UriCompat {const val SCHEME_HTTP = "http"const val SCHEME_HTTPS = "https"fun Uri.getExtensionName(): String {val context = getAppContext()val typeMap = MimeTypeMap.getSingleton()when (scheme) {ContentResolver.SCHEME_FILE -> {val url = Uri.fromFile(File(path)).toString()return MimeTypeMap.getFileExtensionFromUrl(url)}ContentResolver.SCHEME_CONTENT -> {val type = context.contentResolver.getType(this)return typeMap.getExtensionFromMimeType(type).orEmpty()}ContentResolver.SCHEME_ANDROID_RESOURCE -> {val retriever = MediaMetadataRetriever()retriever.setDataSource(context, this)val type = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)return typeMap.getExtensionFromMimeType(type).orEmpty()}SCHEME_HTTP,SCHEME_HTTPS -> return ""else -> return ""}}fun Uri.getMimeType(): String {return MimeTypeMap.getSingleton().getMimeTypeFromExtension(getExtensionName()).orEmpty()}
}
这篇关于【Android】根据URI获取文件扩展名或MimeType的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!