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

求助:play-services-code-scanner突然无法运行问题排查

Google ML Kit 条码扫描突然失效问题排查与解决

对应错误日志

1512-5684 WindowManager system_server E win=Window{6dee8ad u0 com.xxxxx.yyyyy/com.google.mlkit.vision.codescanner.internal.GmsBarcodeScanningDelegateActivity} destroySurfaces: appStopped=true cleanupOnResume=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=4 caller=com.android.server.wm.ActivityRecord.destroySurfaces:6535 com.android.server.wm.ActivityRecord.destroySurfaces:6516 com.android.server.wm.ActivityRecord.notifyAppStopped:6580 com.android.server.wm.ActivityRecord.activityStopped:7168 com.android.server.wm.ActivityClientController.activityStopped:258 android.app.IActivityClientController$Stub.onTransact:613 com.android.server.wm.ActivityClientController.onTransact:136

解决方法

  • 修正扫描启动时机:日志中appStopped=true说明启动扫描时宿主Activity处于停止状态,必须在宿主Activity的onStart或onResume阶段调用startScan(),禁止在后台或onStop阶段触发扫描。
  • 升级依赖版本:16.1.0版本存在窗口管理兼容性bug,升级到最新稳定版修复问题:
    implementation 'com.google.android.gms:play-services-code-scanner:16.2.0'
    
  • 主动校验相机权限:即使之前权限正常,也可能被系统或用户撤销,启动扫描前先检查权限:
    val cameraPermission = Manifest.permission.CAMERA
    if (ContextCompat.checkSelfPermission(this, cameraPermission) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(cameraPermission), 1001)
        return
    }
    barcodeScanner.startScan()
    
  • 避免重复触发扫描:添加状态标记,确保同一时间仅启动一个扫描Activity实例,防止窗口管理冲突。
  • 适配定制ROM限制:部分国产ROM的后台窗口限制会阻止扫描Activity启动,需在应用设置中开启「后台弹出界面」权限,仅在前台状态下触发扫描。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:00:02