Files
zhini_im/拍摄照片问题排查指南.txt

99 lines
3.4 KiB
Plaintext
Raw Permalink Normal View History

拍摄照片问题排查指南
=====================================
问题现象:
- 相机启动后,拍照完成但无法返回 ImageGridActivity
- onActivityResult 没有被调用
- 页面一直显示"正在保存照片..."
排查步骤:
=====================================
1. 检查日志输出
- 过滤标签rjb_ImageGridActivity 和 rjb_Utils
- 关键日志点:
* takePhoto() 被调用
* 相机Activity已启动
* onPause / onStop相机启动后应该会调用
* onRestart / onResume相机返回后应该会调用
* onActivityResult如果被调用说明相机正确返回
2. 检查 Activity 生命周期
- 相机启动后ImageGridActivity 应该进入 onPause/onStop
- 相机返回后,应该进入 onRestart/onResume
- 如果 onResume 被调用但 onActivityResult 没有,说明相机没有正确返回结果
3. 检查文件是否被创建
- 在 onResume 中会检查拍照文件是否存在
- 如果文件存在但 onActivityResult 没被调用,可能是相机没有正确返回
- 文件路径:/data/user/0/com.xunpaisoft.social/cache/img/IMG_*.jpg
4. 检查权限
- 确保相机权限已授予
- 检查日志中的权限相关输出
5. 检查 FileProvider 配置
- 确保 provider_paths.xml 与 demo 项目一致
- 确保 AndroidManifest.xml 中的 FileProvider 配置正确
- authority 应该是:${applicationId}.provider
6. 华为相机特殊问题
- 某些华为相机可能对 cache 目录有特殊限制
- 如果问题持续,可能需要使用外部存储目录
7. 使用 adb 命令检查
- 检查文件是否被创建:
adb shell ls -la /data/user/0/com.xunpaisoft.social/cache/img/
- 检查 Activity 状态:
adb shell dumpsys activity activities | grep ImageGridActivity
- 检查系统日志中的错误:
adb logcat | grep -i "error\|exception\|crash"
8. 对比 demo 项目
- 确保代码与 demo 项目完全一致
- 检查 manifest 配置是否一致
- 检查 FileProvider 配置是否一致
常见问题及解决方案:
=====================================
问题1onActivityResult 没有被调用
- 可能原因:相机应用没有正确返回结果
- 解决方案:
1. 检查相机应用是否有特殊设置
2. 尝试使用其他相机应用测试
3. 检查系统日志中是否有相机相关的错误
问题2文件被创建但 onActivityResult 没有被调用
- 可能原因:相机应用保存了文件但没有正确返回结果
- 解决方案:
1. 在 onResume 中检查文件,如果存在可以手动触发处理(仅用于排查)
2. 检查是否是华为相机的特殊行为
问题3Activity 被销毁
- 可能原因:系统内存不足或配置问题
- 解决方案:
1. 检查 Activity 的 launchMode 配置
2. 检查是否在 manifest 中正确配置了 Activity
问题4权限问题
- 可能原因:相机权限或存储权限未授予
- 解决方案:
1. 检查权限请求流程
2. 确保权限已正确授予
下一步操作:
=====================================
1. 运行应用并触发拍照功能
2. 收集完整的日志输出使用过滤rjb_
3. 检查日志中的关键点:
- takePhoto() 是否被调用
- 相机是否启动
- onPause/onStop 是否被调用
- onRestart/onResume 是否被调用
- onActivityResult 是否被调用
- 文件是否被创建
4. 将日志和问题现象一起反馈,以便进一步分析