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

Flutter项目中local_auth与shuftipro_onsite_sdk返回键冲突问题求助

解决local_auth与shuftipro_onsite_sdk的Activity冲突及Android 12+返回键问题

方案一:自定义兼容Activity同时适配两个包

  • 让MainActivity继承FlutterFragmentActivity,补全shuftipro_onsite_sdk的适配:
    • 核对shuftipro SDK文档,检查是否有针对FragmentActivity的配置要求,比如在AndroidManifest.xml里给Activity添加特定launchMode或主题参数
    • 手动初始化shuftipro SDK时,明确传入当前Activity的上下文,避免依赖默认的Activity类型限制
  • 修复Android 12+返回键与PopScope失效问题:
    在MainActivity.kt中重写onBackPressed方法,手动把返回事件分发给Flutter:
    override fun onBackPressed() {
        if (flutterEngine?.navigationChannel?.popRoute() == false) {
            super.onBackPressed()
        }
    }
    
    同时确保Flutter层的PopScope(或低版本的WillPopScope)正确监听返回事件,和原生层逻辑配合。

方案二:不切换FragmentActivity,兼容local_auth

  • 先检查local_auth的最新版本,看是否已经支持在FlutterActivity下直接运行,无需切换父类
  • 如果必须依赖Fragment特性,试试手动在FlutterActivity中添加local_auth需要的Fragment:
    class MainActivity : FlutterActivity() {
        private val authFragment = LocalAuthFragment()
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            supportFragmentManager.beginTransaction().add(authFragment, "LocalAuth").commit()
        }
    }
    
    然后通过MethodChannel把这个Fragment的上下文传递给local_auth,确保验证逻辑能正常触发(部分场景可能需要修改local_auth的源码适配)

方案三:隔离两个功能的运行环境

  • 把指纹/面容验证和shuftipro证件验证拆分到不同Activity:
    • 主Activity用FlutterActivity,专门处理shuftipro的验证流程
    • 新建一个继承FlutterFragmentActivity的子Activity,只负责指纹/面容验证,需要验证时跳转过去,完成后返回主Activity
    • 注意处理两个Activity之间的参数传递和结果回调,确保验证状态能同步到Flutter业务逻辑中

内容的提问来源于stack exchange,提问作者RA Rimon Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:10:59