当前位置: 首页 > 面试题库 >

WebView和HTML5

赫连明诚
2023-03-14
问题内容

我正在拼凑一个cheapo应用程序,该应用程序除其他外可以“构架”我们的某些网站…使用,非常简单WebViewClient。直到我看了视频。

视频是作为HTML5
元素完成的,在Chrome,iPhone上它们可以正常工作,而且现在我们已解决了编码问题,Android在本机浏览器中效果很好。

现在的问题是:WebView不喜欢它。完全没有 我可以单击海报图像,但没有任何反应。

谷歌搜索,我发现这很接近,但似乎是基于“链接”(如href…),而不是视频元素。(onDownloadListener似乎未在视频元素上被调用…)

我还看到了有关重写onShowCustomView的引用,但是似乎没有在视频元素上调用……shouldOverrideUrlLoading也没有。

我宁愿不要进入“从服务器中提取xml,在应用程序中重新格式化它”..通过保持服务器上的故事布局,我可以更好地控制内容,而不必强迫人们不断更新应用程序。因此,如果我可以说服WebView处理本机浏览器之类的标签,那将是最好的。

我显然缺少明显的东西。但是我不知道是什么。


问题答案:

我回答这个主题,以防万一有人阅读它并对结果感兴趣。可以在WebView中查看视频元素(视频html5标签),但是我必须说我不得不处理几天。到目前为止,我必须遵循以下步骤:

-查找正确编码的视频

-初始化WebView时,设置JavaScript,插入WebViewClient和WebChromeClient。

url = new String(“ http://broken-links.com/tests/video/”); 
mWebView =(WebView)findViewById(R.id.webview);
mWebView.setWebChromeClient(chromeClient);
mWebView.setWebViewClient(wvClient);
mWebView.getSettings()。setJavaScriptEnabled(true);
mWebView.getSettings()。setPluginState(PluginState.ON);
mWebView.loadUrl(url);

-处理WebChromeClient对象中的onShowCustomView。

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout){
        FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView){
            VideoView video = (VideoView) frame.getFocusedChild();
            frame.removeView(video);
            a.setContentView(video);
            video.setOnCompletionListener(this);
            video.setOnErrorListener(this);
            video.start();
        }
    }
}

-处理视频的onCompletion和onError事件,以返回到Web视图。

public void onCompletion(MediaPlayer mp) {
    Log.d(TAG, "Video completo");
    a.setContentView(R.layout.main);
    WebView wb = (WebView) a.findViewById(R.id.webview);
    a.initWebView();
}

但是现在我应该说还有一个重要的问题。我只能播放一次。第二次单击视频分发器(海报或某些播放按钮)时,它什么也没做。

我也希望视频在WebView框架内播放,而不是打开Media Player窗口,但这对我来说是个次要问题。

希望对您有所帮助,也要感谢您的任何评论或建议。

Saludos,terrícolas。



 类似资料:
  • 问题内容: 我的Web视图有问题,该Web视图可能通过应用程序访问localStorage 。test.html文件通知我浏览器(即)不支持本地存储。如果您有任何建议。 问题答案: 缺少以下内容:

  • webview标记用于在您的Electron应用中嵌入“来宾”内容,例如网页。 此内容包含在webview容器中。 应用内的嵌入式页面控制着如何显示此内容。 webview在与您的应用程序不同的进程中运行。 为确保恶意内容的安全性,webview与您的网页没有相同的权限。 这可以确保您的应用免受嵌入内容的侵害。 您的应用与嵌入页面之间的所有互动都将是异步的。 让我们考虑一个示例来了解在我们的Ele

  • 一个非常简单的应用程序,API level 24(Android 7.0),试图在实际物理设备上的唯一活动中加载网络视图,在日志中给出以下信息并停止应用程序: 和 和 怎么回事?某种版本/依赖性问题?如何纠正? 用于WebView的XML: WebView代码: 完整项目:https://github.com/qabi/webviewtest

  • Extends Widget A widget that can display a web page. Since this widget requires a lot of resources it’s recommended to have no more than one instance at a time. Import this type with “const {WebView}

  • 组件 触发字符 mui.open(打开新页面) mopen mui.currentWebview (当前页面) mcurrent mui.back()(关闭窗口) mback mui.backFunction()(重写返回逻辑) mbackfunction mui.backDouble()(双击退出应用) mbackDouble mui.backTast(双击进入后台) mbacktast mui

  • webview 模块提供了一系列的 <web> 组件操作接口,例如 goBack、goForward 和 reload,一般与 <web> 组件一起使用,在 Weex 页面内渲染 web 页面。 var webElement = this.$el('webview'); var webview = weex.requireModule('webview'); webview.goBack(webE