我正在从网络摄像头检索加速移动页面(APM)格式化的HTML。然后我尝试在WebView中显示该AMP。所以我正在设置我的WebView:
webView = (WebView) findViewById(R.id.web_view);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
String content = article.getContentAmp();
webView.loadData(content, "text/html; charset=utf-8", null);
它显示内容没有错误,但它没有正确显示。它忽略了例如amp-youtube元素和嵌入的推文。
我是否还需要使用WebView或WebChromeClient来正确显示AMP?
编辑:
以下答案有效。但在我的具体情况下,我在NestedScrollView中使用WebView。这在Android 5.0+中运行良好,但在此之下,放大器元素无法加载。
从NestedScrollView中取出WebView解决了这个问题。它的父母现在是一个相对布局。
因此,如果您遇到同样的问题,请尝试简化布局,以便WebView不会深层嵌套。绝对不要把你的WebView放在NestedScrollView中。
答案 0 :(得分:1)
您无法在不向WebView提供基本网址的情况下显示嵌入式YouTube视频,图片,推文等元素。解决方案是在webView.loadData上使用webview.loadDataWithBaseUrl。您必须将其传递给有效的网址。
webView = (WebView) findViewById(R.id.web_view);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
String content = article.getContentAmp();
String baseUrl = extractUrlFromContent(content);
webView.loadDataWithBaseURL(baseUrl, content, "text/html", "utf-8", "");