android - onActivityResult resultCode 给出了反之亦然的结果
问题描述
我正在使用默认的 android Image Capture 意图,但我遇到了问题。这是我的代码
fun onCameraClick(): View.OnClickListener {
return View.OnClickListener {
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if (intent.resolveActivity(dialog.context.packageManager) != null) {
var photoFile: File? = null
try {
photoFile = dialog.context.createImageFile()
} catch (e: IOException) {
Timber.e(e)
}
photoFile?.let {
val photoURI = FileProvider.getUriForFile(
dialog.context,
"${dialog.context.packageName}.fileprovider",
it
)
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
generalBottomSheetDialogFragment?.startActivityForResult(intent, CAMERA_REQUEST_CODE)
}
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
CAMERA_REQUEST_CODE -> {
when {
requestCode == -1 -> {
}
requestCode == RESULT_CODE_OK -> {
}
else -> {
}
}
}
PDF_REQUEST_CODE ->
data?.also {
generalResponse.setElement(it)
dialog.dismiss()
}
}
}
我的问题是,当我成功拍照时,resultCode 将为-1,而当我从相机按回来时,我得到了 RESULT_CODE_OK。谁能帮我看看为什么会这样?我没看到什么?
解决方案
根本原因:因为您的代码不正确
解决方案:更改您的代码
从
when {
requestCode == -1 -> {
}
requestCode == RESULT_CODE_OK -> {
}
else -> {
}
}
到
when {
resultCode == Activity.RESULT_OK -> {
}
resultCode == Activity.RESULT_CANCELED -> {
}
else -> {
}
}
推荐阅读
- python - 使用布尔值重复 while 循环
- java - 最后阻止执行
- asp.net - 关闭带有特定 url 的浏览器窗口(由不同的浏览器打开)
- java - 使用 StrategySelectionException 和 BeanCreationException (entityManagerFactory) 启动问题应用程序
- codeigniter - Codeigniter 4 pdf url路由
- windows-7-embedded - 当文本字段在 Chrome 或 Safari 中处于活动状态时,如何强制打开 Windows Embedded PosReady 7 键盘
- skia - 类似于skia中“丢弃”的API
- python - python数据模拟中的最佳工作流程:数组VS字典VS数据框
- mongodb - 使用 Fluentd 将数据传输到 DocumentDB
- json - JQ:将对象添加到具有相同键名的嵌套 json