android - 用于图像捕获的文件提供程序配置
问题描述
我想用相机捕捉图像,我附加图像路径以进行捕捉输出。我想将图像images
存储在外部存储中的文件夹中getExternalFilesDir
。
像这样:
/storage/emulated/0/Android/data/packagename/files/images/21_4_2021_14_23_24.png
我不明白应该如何查看文件提供程序路径以访问我的images
文件夹,目前是:
<paths>
<files-path name="internalFiles" path="/" />
<external-path name="external" path="/" />
<external-files-path name="exportFiles" path="/" />
<external-media-path name="externalMedia" path="/" />
</paths>
解决方案
文件路径.xml
<paths>
<external-files-path name="my_images" path="images/" />
</paths>
并确保您path
在创建file
. 喜欢:
@Throws(IOException::class)
private fun createImageFile(): File {
// Create an image file name
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
// Here I have used "images" because it is set as my path in file_paths.xml
val storageDir: File? = requireContext().getExternalFilesDir("images")
return File.createTempFile(
timeStamp, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
)
}
否则exception
将在uri
传入时intent
抛出
val photoURI: Uri? = context?.let {
try {
createImageFile().let { file ->
FileProvider.getUriForFile(
it,
requireContext().applicationContext.packageName.toString() + ".provider",
file
)
}
}catch (e: Exception){
Log.d("TAG==>>","${e.localizedMessage}")
null
}
}
photoURI?.let {
//currentImageUri = it
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.putExtra(MediaStore.EXTRA_OUTPUT, currentImageUri)
startActivityForResult(intent,101) // replace with your request code
}
推荐阅读
- python - 如何总结多个 csv 文件中的所有计数是否为零?
- c# - 如何在 Net Core MVC 模块化插件应用程序中注入多个启动配置文件?
- gatling - 如何在加特林报告中打印响应标题?
- swagger - 在我的招摇页面上选择默认下拉值
- .htaccess - 如何将流量从 http://mydomain.com.br-my-account 重定向到端口 443 (.htaccess)?
- apache - Apache LimitRequestBody 被忽略
- ios - Firebase 云消息广播由捆绑 ID 或 firebase 项目 (GoogleService-Info.plist) 确定
- c# - 使用 ProgressBar 作为 StackPanel 背景
- vector - How can I split a vector into smaller vectors of size N?
- database - GridDB 支持复合索引吗?