首页 > 解决方案 > 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()
    ...
}

标签: androidandroid-intentkotlinandroid-camera

解决方案


有谁知道为什么?

EXTRA_OUTPUT是提示,而不是命令。理想情况下,所有相机应用程序都会将其作为ACTION_IMAGE_CAPTURE处理的一部分。没有要求他们这样做,许多相机应用程序都有ACTION_IMAGE_CAPTURE不这样做的实现。

onActivityResult 的返回值也不显示文件名,而只显示“null”

ACTION_IMAGE_CAPTURE没有记录返回一个Urithrough onActivityResult()。所以,它应该是null


推荐阅读