我正在尝试通过以下代码从我的android应用捕获图像,
val values = ContentValues()
values.put(MediaStore.Images.Media.TITLE, "Loft Image")
values.put(MediaStore.Images.Media.DESCRIPTION, "Taken for admin verification")
capturedImageUri =
activity?.contentResolver?.insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values
)!!
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri)
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE)
我在onActivityResult中获取了这个captureImageUri,用于一些后期处理工作。有时由于空指针异常而导致我尝试获取位图宽度和高度应用程序崩溃。分析文件时,得到以下结果,
capturedImageUri = content:// media / external / images / media / 129231
当我将这个captureImageUri转换为File时,我得到了这个文件名,
file = /storage/emulated/0/Pictures/1603464077858.jpg
当我进入文件浏览器并检查此文件名时,文件大小为零。现在我明白了为什么会抛出空指针豁免。
在我的活动结果中,我正在使用以下代码验证结果,
if (resultCode == Activity.RESULT_OK) {
file = RealPathUtil()
.getRealPath(requireContext(), capturedImageUri)!!
} else {
Toast.makeText(requireContext(), "Image Not Uploaded", Toast.LENGTH_SHORT).show()
return
}
这个问题根本不会出现在运行于android 11的模拟器中,但有时会出现在运行于同一android 11的我的个人手机PIXEL-2中。
为什么相机会存储0kb的图片?