前提
通过uni-app开发并发布原生鸿蒙系统app时发现使用web-view打开的网页不能自动播放音视频,需要用户手动点击才能播放。
这个原因是在鸿蒙工程中web-view默认配置关闭了自动播放音视频(有很多配置和权限默认都是关闭了,在代码中配置,例如需要调用麦克风或摄像头,则需要配置,详情可查看华为鸿蒙相关文档)。
另一个原因是编译出来的鸿蒙工程中依赖的相关库中对web-view相关配置缺少相关配置导致。
解决方案
-
通过 HBuilderX 编译出新的鸿蒙工程
-
关闭 HBuilderX 运行的鸿蒙
-
修改编译出来的鸿蒙工程
工程路径/oh_modules/.ohpm/@dcloudio+uni-app-runtime@idazlhvgikh3aw++r+ncdsd8lhisx+iuufxvzpgrtyy=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/components/WebView.ets
文件,改为以下内容(如果新版的@dcloudio+uni-app-runtime
库已经添加了就可以不用再添加)
...省略部分代码
build() {
Web({
src: this.src,
controller: this.controller
})
...省略部分代码
// 添加以下设置
.javaScriptAccess(true)
// mediaPlayGestureAccess 需要设置为 false 默认是 true,如果是true 则需要用户点击才能播放音视频
.mediaPlayGestureAccess(false)
}
...省略部分代码
- 使用DevEco-Studio编译打包