android - Android Samsung ACTION_IMAGE_CAPTURE 未保存为正确的文件名
问题描述
经过数小时的调试,我无法将三星 Android 手机上的图片意图保存到正确的文件中。以下代码(Kotlin):
val filename=File(getExternalStorageDirectory()?.toString()+"/test.jpg")
if (filename != null) {
val takePictureIntent=Intent(MediaStore.ACTION_IMAGE_CAPTURE)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, filename)
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
}
它将始终保存在文件名的 sdcard/DCIM/Camera/20181104_181922.jpg(即日期和时间)的文件夹中。
有谁知道为什么?
onActivityResult 的返回值也不显示文件名,而只显示“null”。请参阅以下代码:我做错了什么?
override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent?) {
...
val returnedFilename = data?.getData()
...
}
解决方案
有谁知道为什么?
EXTRA_OUTPUT
是提示,而不是命令。理想情况下,所有相机应用程序都会将其作为ACTION_IMAGE_CAPTURE
处理的一部分。没有要求他们这样做,许多相机应用程序都有ACTION_IMAGE_CAPTURE
不这样做的实现。
onActivityResult 的返回值也不显示文件名,而只显示“null”
ACTION_IMAGE_CAPTURE
没有记录返回一个Uri
through onActivityResult()
。所以,它应该是null
。
推荐阅读
- python - 递归 collections.defaultdict 初始化
- r - 为什么 NaN 和 Inf - Inf 的哈希值不同?
- python - 如何在不丢失行的情况下合并 Time Series Panda 数据框?
- php - 创建将匹配字符串中的要求的正则表达式
- java - 在 Java 应用程序中,有没有办法格式化/缩进 XSLT 文档?
- highcharts - 最大不能有 highcharts x 轴标签
- javascript - Aurelia bindingEngine.propertyObserver - 检测何时因对象更改而更改属性
- apache-camel - 如何在 Apache Camel 中安排 JMS 消费?
- laravel - Laravel JOIN 查询有 2 个条件,其中一个为 NULL
- java - 将非 Web 客户端的用户名和密码传递给 RestController Service 并在 Service 中检索