【发布时间】:2018-08-08 01:50:15
【问题描述】:
我想在 android web 视图中显示来自相对 URL 的图像,例如 (//via.placeholder.com/350x150) 虽然我可以看到 html ,但图像在 web 视图中被破坏了。
下面是我从自定义 html 加载图像的代码,传递给 webview.loadData 函数。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
String customHtml ="<html>\n" +
"<body>\n" +
"\n" +
" <h3>A demonstration of how to access an IMG element</h3>\n" +
"\n" +
" <img id=\"myImg\" src=\"//via.placeholder.com/350x150\" alt=\"The Pulpit Rock\" width=\"304\" height=\"228\">\n" +
"\n" +
" <p>Click the button to get the URL of the image.</p>\n" +
"\n" +
" <button onclick=\"myFunction()\">Try it</button>\n" +
"\n" +
" <p id=\"demo\"></p>\n" +
"\n" +
" <script>\n" +
" function myFunction() {\n" +
" var x = document.getElementById(\"myImg\").src;\n" +
" document.getElementById(\"demo\").innerHTML = x;\n" +
" }\n" +
" </script>\n" +
"\n" +
"</body>";
webView.loadData(customHtml, "text/html", "UTF-8");
}
我有适当的权限
<uses-permission android:name="android.permission.INTERNET"/>;
在我的情况下,主要问题是,我总是使用相对 url 获取图像,即它不会将 http: 或 https: 附加到 url。 那么我应该在 android 中使用什么设置或功能来显示来自相对 url 协议的图像。
请帮忙。
【问题讨论】:
-
在普通浏览器中能正常渲染吗?
-
是的。它在普通浏览器中工作正常。
-
看来你不能这样做,因为你从一个字符串而不是一个实际的网页中获取你的 html。您在实际浏览器中获取图像的原因是因为您实际上可以找到图像文件,但您的网络视图却找不到
-
不管是通过字符串还是网页呈现html。如果我将 http: 前缀到 url //via.placeholder.com/350x150 那么相同的 html 字符串会在 webview 中显示图像。所以问题与相关协议有关。我不确定,如何在 Web 视图中使用相关协议以及需要更改的 android 设置/权限。
-
您可以根据需要在图像 url 前添加协议类型
标签: android android-webview protocol-relative