应用为外壳鸿蒙内嵌uniapp h5,拍摄逻辑都是使用uniapp相关的api实现
- 发布:2026-05-20 11:09
- 更新:2026-05-20 11:11
- 阅读:22
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 5.06
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS 5.1.0
手机厂商: 华为
手机机型: nova 13 pro
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
App下载地址或H5⽹址: 应用市场 慧运营
示例代码:
操作步骤:
登录进入首页选择“检核”->“选择任意任务”->“巡检”->“拍摄视频”
- 选择拍摄视频
- 调起摄像头
- 拍摄7s左右视频
- 结束拍摄后无确认选择视频按钮
- 后续业务无法获取到视频
登录进入首页选择“检核”->“选择任意任务”->“巡检”->“拍摄视频”
- 选择拍摄视频
- 调起摄像头
- 拍摄7s左右视频
- 结束拍摄后无确认选择视频按钮
- 后续业务无法获取到视频
预期结果:
正常可以确认拍摄的视频,api获取到拍摄结果
正常可以确认拍摄的视频,api获取到拍摄结果
实际结果:
无法确认勾选拍摄视频
无法确认勾选拍摄视频
bug描述:
- 选择拍摄视频
- 调起摄像头
- 拍摄7s左右视频
- 结束拍摄后无确认选择视频按钮
- 后续业务无法获取到视频
通过日志系统获取到的uni.chooseVideo fail回调信息
{"0":"n","1":"u","2":"l","3":"l","errMsg":"chooseVideo:fail cancel","errCode":0,"code":0}
Ask小助手 - Ask社区AI助手
欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
感谢你对 uni-app 的细致反馈。
作为官方人员,我对你这个 bug 反馈进行以下评审,希望能帮助我们更高效地定位和解决问题。
1. 反馈内容完整性评审
-
BUG 描述:描述基本清晰,说明了问题现象是“结束拍摄后无确认选择视频按钮”,并提供了关键的 fail 回调日志
{"0":"n","1":"u","2":"l","3":"l","errMsg":"chooseVideo:fail cancel","errCode":0,"code":0}。这部分信息非常有价值。如果能补充说明一下“应用为外壳鸿蒙内嵌uniapp h5”的具体情况会更好,例如,是原生鸿蒙应用通过 webview 加载 uniapp 的 H5 页面,还是整个应用就是一个 uni-app 项目编译成鸿蒙的 app,这有助于我们判断问题的边界。 -
代码示例:提供的示例
应用为外壳鸿蒙内嵌uniapp h5,拍摄逻辑都是使用uniapp相关的api实现是不完整的。我们无法看到你具体是如何调用uni.chooseVideoAPI 的,比如参数是如何设置的,是否在 fail 或 success 回调中执行了其他逻辑。这是目前反馈中最需要补充的部分。 -
复现步骤:复现步骤描述非常清晰,从登录到具体业务操作路径,再到问题出现,逻辑连贯。结合描述,官方人员可以按照这个业务流程去尝试复现,但由于缺少代码示例,我们只能基于一个全新的空白工程去测试
uni.chooseVideoAPI 本身,而无法还原你的具体业务场景。 -
预期结果:“正常可以确认拍摄的视频,api获取到拍摄结果”是一个非常合理且符合 API 文档描述的预期结果。
-
实际结果:“无法确认勾选拍摄视频”是用户角度的现象描述。结合给出的错误日志
chooseVideo:fail cancel,从技术层面看,API 并非没有回调,而是触发了 fail 回调并返回了“cancel”(取消)信息。这有助于我们判断是拍摄界面本身的问题,还是调用方式的问题。 -
分类信息:分类信息非常完整,包含了操作系统、HBuilderX、鸿蒙版本、Vue 版本和设备型号等关键信息。其中 HBuilderX 5.06 和 HarmonyOS NEXT 5.1.0 的环境信息至关重要。
综合来看,这是一个高质量的 bug 反馈,但核心缺失了最为关键的“代码示例”,这是能否成功定位问题的关键。
2. Bug 成立性分析
根据知识库内容,我对你遇到的问题进行了分析:
-
该现象在历史版本中曾出现过:从 Ask 社区的记录来看,类似调用
uni.chooseVideo进入拍摄后无反应并回调chooseVideo:fail cancel的问题,在较老的 HBuilderX 3.6.4 版本上出现过,并已于 HBuilderX 3.6.8-alpha 版本修复。你当前使用的版本(5.06)远高于那个时期,因此基本可以排除是同一个历史问题。 -
鸿蒙平台
uni.chooseVideo已支持:根据官方文档,uni.chooseVideo从 HBuilderX 4.23 起已支持鸿蒙平台。你使用的 5.06 版本已经完全支持该API,因此理论上功能应该是可用的。文档链接:video > uni.chooseVideo(OBJECT) > chooseVideo 兼容性 -
“cancel”错误的常见原因:
chooseVideo:fail cancel错误通常表示用户在拍摄或选择界面取消了操作,或者系统在某些情况下将此行为识别为取消。在新平台(如 HarmonyOS NEXT)上,这可能仍是一个未完全适配的边缘情况或者特定机型的兼容性问题。
结论: 虽然历史上有过类似问题并已修复,且 API 官方已宣称支持鸿蒙,但由于你使用的是较新的 HBuilderX 版本和 HarmonyOS NEXT 系统,不能完全排除是新出现的平台适配问题。因此该 bug 有很大可能是成立的,但需要进一步确认。
作为临时解决方案,你也可以考虑尝试使用另一专为选择媒体文件设计的 API uni.chooseMedia,该 API 同样支持拍摄视频和选择视频,并且从 HBuilderX 4.31 起支持鸿蒙平台。可以测试一下在你的场景中是否能正常工作,以帮助进一步定位问题是局限于 uni.chooseVideo 还是涉及更底层的调用。文档链接:video > uni.chooseMedia(OBJECT)
3. 基本概念问题澄清
-
平台理解正确:你提到了“外壳鸿蒙内嵌uniapp h5”,这本身不构成概念错误,但它让问题变得复杂。我们需要明确你具体的开发模式。如果是完整使用 uni-app 开发并编译为鸿蒙 App,那么使用的是 uni-app 的鸿蒙原生渲染引擎,问题会直接对应到框架底层。如果是“原生鸿蒙 App 内嵌 uniapp 的 H5 页面”,那么
uni.chooseVideo实际上调用的是 H5 的浏览器能力(可能由系统 WebView 提供),这和标准的 uni-app 鸿蒙 App 内部调用是不同的。这个细节对于问题的定位至关重要。 -
没有违反鸿蒙平台约束:你的问题中没有提及或混用
app-plus等内容,这在处理鸿蒙平台问题时是正确的。
总结与建议
为了更好地推进解决这个问题,建议你配合完成以下操作:
-
提供一个最简复现 Demo:这是最关键的一步。请尝试新建一个空白的 uni-app 项目(选择 Vue3 模板),在首页只放置一个按钮,点击后调用
uni.chooseVideo的简单代码,然后打包或真机运行到你的鸿蒙手机上。这可以验证是 API 本身在你特定机型/系统上的问题,还是你业务项目中其他代码干扰导致的。 -
明确应用开发模式:请在后续反馈中明确,你的应用是“标准的 uni-app 项目直接编译为鸿蒙 App”,还是“原生鸿蒙壳工程通过 WebView 加载了一个 uni-app 编译的 H5 站点”。这决定了我们排查问题的技术路径。
-
发起正式 Bug 工单:在你准备好上述信息后,非常欢迎你到 DCloud Issues 系统 提出一个正式的 bug 工单,并附上你的测试 Demo 和详细说明。我们的研发同学会直接跟进。