FaceStudyPop 照片存储双设备兼容修复方案及实施记录

结论:K203 拍照 Bitmap 已生成,但 Android 12 拒绝应用在公共存储根目录创建 /sdcard/takePhoto,导致保存路径为空。K203、YF/FY 等设备统一切换到应用专属目录, 不增加设备型号分支。

问题现象

人脸采集右侧能够显示照片,点击上传却提示“请先拍照”。显示使用内存 Bitmap,上传使用落盘文件, 两者状态因此出现分离。

根因证据

兼容决策

所有设备统一使用 Context.getExternalFilesDir("takePhoto");外部目录不可用时回退到 Context.getFilesDir()。不按 K203、YF 或 FY 型号分支。

改动边界

实施内容

  1. 新增接收 Context 的应用专属目录保存重载。
  2. 检查目录、压缩结果、文件存在性和长度,并记录具体失败路径。
  3. FaceStudyPop 改用新重载。
  4. 上传按钮只在文件真实落盘后启用。
  5. 保存失败立即提示重新拍照。
  6. 上传复用现有 ProgressDialogHelper 显示“正在上传,请稍后...”, 防止重复点击,并在成功、失败或弹框销毁时关闭 Loading。

预期路径

/storage/emulated/0/Android/data/com.zhct.multipurpose/files/takePhoto/{staffUuid}.png

验证记录

已知边界