java - 我的 webview 视频可以在模拟器上运行,但不能在设备上运行
问题描述
我正在开发一个 WebRTC webview 项目。我正在播放具有摄像头和麦克风权限的视频。视频可以在模拟器上运行,但不能在手机上运行。按钮进来,相机打开,但视频没有出现。在白色屏幕上留下叶子。
API 级别与 API 28 相同。
我的代码在这里
初始化视图()
mWebView = (WebView) findViewById(R.id.wb);
mWebView.requestFocus();
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
WebSettings settings = mWebView.getSettings();
settings.setDomStorageEnabled(true);
mWebView.setWebViewClient(new MyWebViewClient());
WebChromeClientCustomPoster chromeClient = new WebChromeClientCustomPoster();
mWebView.setWebChromeClient(chromeClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onPermissionRequest(final PermissionRequest request) {
MainActivity.this.runOnUiThread(new Runnable(){
@TargetApi(Build.VERSION_CODES.M)
@Override
public void run() {
request.grant(request.getResources());
}// run
});// MainActivity
}// onPermissionRequest
});// setWebChromeClient
mWebView.loadUrl("http://google.com");
解决方案
我找到了答案。我添加了
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false)
并且应用程序工作正常。
推荐阅读
- angular - 如何使用 Angular JSONP 拦截器
- datajoint - 从零件表(而不是其主表)到上游表的依赖关系突然失败
- reactjs - Ant Design Table 默认打开子行
- react-native - 反应原生 Expo Flatlist - web 上的 scrollToEnd() 不起作用
- node.js - 测试 TypeORM 的 QueryBuilder 链接方法的正确方法是什么?
- azure - 为什么日志分析查询没有返回我使用编码(REST API)将 VM 与工作区集成的结果?
- javascript - 使用 Bootstrap 4 在单行上创建动态下拉项
- php - 未定义的属性:App\Controllers\Courtyard::$uri
- string - Dart/Flutter Map 有空奇怪的空键,导致一个值
- node.js - Node JS 异步概念