Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未触发registerForActivityResult拍摄照片_Android_Onactivityresult_Registerforactivityresult - Fatal编程技术网

Android 未触发registerForActivityResult拍摄照片

Android 未触发registerForActivityResult拍摄照片,android,onactivityresult,registerforactivityresult,Android,Onactivityresult,Registerforactivityresult,我正在尝试新的注册表,以获得拍照的结果。我可以打开相机意图,但拍照后,并没有触发回调,我看不到任何关于活动结果或logcat错误的信息 我也试过请求许可,它被触发了。我找不到,怎么了 我的代码在这里: class UploadDocumentFragment { private val registerTakePicture = registerForActivityResult( ActivityResultContracts.TakePicture() )

我正在尝试新的注册表,以获得拍照的结果。我可以打开相机意图,但拍照后,并没有触发回调,我看不到任何关于活动结果或logcat错误的信息

我也试过请求许可,它被触发了。我找不到,怎么了

我的代码在这里:

class UploadDocumentFragment {

    private val registerTakePicture = registerForActivityResult(
        ActivityResultContracts.TakePicture()
    ) { isSuccess ->
        if (isSuccess) {
            viewModel.addDocToRequest()
            viewModel.setSelectedDocument(null)
        } else {
            R.string.internal_error.showAsDialog { }
        }
    }

    //...

    private fun takeImage() {
        val photoFile: File? = viewModel.createImageFile()
        photoFile?.also {
            val photoURI: Uri = FileProvider.getUriForFile(
                requireContext(),
                BuildConfig.APPLICATION_ID +".fileProvider",
                it
            )
            registerTakePicture.launch(photoURI)
        }
    }
}
ViewModel上的createImageFile函数:

@Throws(IOException::class)
fun createImageFile(): File? {
    val imageFileName = selectedDocumentTypeLD.value?.visibleName
    return try {
        val file = File(storageDir, "$imageFileName.jpg")
        if (file.createNewFile() || file.exists()) {
            file
        } else {
            null
        }
    } catch (ex: IOException) {
        ex.printStackTrace()
        null
    }
}
应用程序梯度:

implementation 'androidx.activity:activity-ktx:1.2.0-alpha06'
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha06'
我发现了问题


我以前的onActivityResult函数仍然存在。我想旧函数可能会覆盖registerForActivityResult。当我删除旧函数时,registerForActivityResult工作得很好。

谢谢您的提问。今天,我偶然发现这个框架是存在的!谷歌指南对应用程序gradle的细节有点欠缺。你能展示一下你的虚拟机的
createImageFile()
方法做什么吗?@Sampson我补充到我的答案中。如果你在onStart方法中初始化变量
registerTakePicture
,这种情况也会发生。我失去了两天,直到我明白这一点。我没有“onActivityResult”方法,它仍然没有被触发。当我在父活动中实现onActivityResult时,它在那里被触发。