You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Android扫码弹出“Unable to access camera”Toast错误如何修复

Kotlin Android扫码Unable to access camera错误修复方案

核心错误原因

onResume生命周期方法未做权限校验直接调用相机预览:当用户首次进入扫码页时,onResume会在权限申请弹窗返回结果之前执行,此时还没有拿到相机权限,直接调用codeScanner.startPreview()就会触发无权限访问相机的错误。

修复方案

1. 调整onResume方法逻辑

补充权限判断,只有相机权限已授予的情况下才启动扫码预览:

override fun onResume() {
    super.onResume()
    // 新增权限校验逻辑
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        codeScanner.startPreview()
    }
}

2. 可选:补充Manifest配置

适配高版本Android规范,避免应用商店上架或者高版本系统运行异常:

<uses-permission android:name="android.permission.CAMERA" />
<!-- 声明应用需要相机硬件,required设为false代表没有相机的设备也能安装,可根据业务调整 -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

3. 可选:增加永久拒绝权限的引导逻辑

在onRequestPermissionsResult中判断用户是否永久拒绝了权限,引导用户到系统设置页开启:

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if (requestCode == MY_CAMERA_PERMISSION_REQUEST) {
        if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            codeScanner.startPreview()
        } else {
            // 判断用户是否勾选了不再询问
            if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
                Toast.makeText(this, "您已永久拒绝相机权限,请到系统设置中开启后使用扫码功能", Toast.LENGTH_LONG).show()
                // 可在此处弹出弹窗,引导用户跳转到设置页
            } else {
                Toast.makeText(this, "需要相机权限才能使用扫码功能", Toast.LENGTH_LONG).show()
            }
        }
    }
}

其他排查项

  • 检查测试设备的相机是否被其他应用占用,或者模拟器是否已经配置了可用的相机硬件
  • 确认你使用的扫码库版本适配了你当前的测试系统版本

内容的提问来源于stack exchange,提问作者user17056863

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:18:03