首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发registerForActivityResult TakePicture

未触发registerForActivityResult TakePicture
EN

Stack Overflow用户
提问于 2020-06-21 18:45:20
回答 2查看 5.7K关注 0票数 4

我试着用新的registerForActivityResult拍照。我可以打开摄像头意图,但拍照后没有触发回调,也看不到Activity结果或logcat上的错误。

我也试过RequestPermission,它被触发了。我找不到,出什么事了。

我的代码如下:

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
@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
    }
}

App gradle:

代码语言:javascript
复制
implementation 'androidx.activity:activity-ktx:1.2.0-alpha06'
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha06'
EN

回答 2

Stack Overflow用户

发布于 2020-06-23 04:40:52

我找到问题了。

我之前的onActivityResult函数仍然存在。我想也许旧的函数可以覆盖registerForActivityResult。当我删除旧函数时,registerForActivityResult运行得很好。

票数 7
EN

Stack Overflow用户

发布于 2021-11-11 10:23:33

在我的例子中,问题是容器活动(包含所有片段的活动)中的清单中的android:noHistory="true"

在片段中删除名为registerForActivityResult()的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62497463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档