图片未在 android 网络视图中加载
Images not loading in android webview
我正在尝试在 android 应用网页视图中加载网站。
站点加载时没有图像,站点中的所有图像都未加载可能是什么问题。
onCreate的代码如下所示。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
String url = getResources().getString(R.string.web_url);
web = (WebView) findViewById(R.id.webview01);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
web.setWebViewClient(new myWebClient());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setUseWideViewPort(true);
web.loadUrl(url);
}
请注意,当我使用 web.getSettings().setJavaScriptEnabled(false) 将 javascript 设置为 false 时;图片加载时发出警告,即 javascript 应正确启用 运行 站点。
此站点受 CloudFlare 保护,这可能是图像未加载到 android 网络视图中的原因吗?
添加
web.getSettings().setDomStorageEnabled(true);
这应该有效。其余的保持原样。
虽然需要注意,但我认为不建议默认启用它,默认情况下它是禁用的。该设置允许网站存储数据并重复使用。所以图片没有被加载,因为不允许该站点将它们存储在您的设备上。这引发了一系列安全问题。
我怀疑问题可能出在您的 webview 客户端上。
改用这个:
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Finished loading URL: " +url);
if (pDialog.isShowing()) {
pDialog.dismiss();
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(TAG, "Error: " + description);
Toast.makeText(FundCardWeb.this, "Page Load Error" + description, Toast.LENGTH_SHORT).show();
}
});
就用这行代码吧。我想你的问题会得到解决。
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
如果你懒加载内容,你可能也需要这个:
webView.getSettings().setJavaScriptEnabled(true);
只要这个就够了
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
对我来说,添加这些的组合做到了:
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setLoadsImagesAutomatically(true);
我不喜欢添加不必要的鳕鱼,所以我没有使用:
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
我在 Android 9.0 中遇到了类似的问题。站点 html 中的图像使用 http 而不是 https。
然后我用 https 更改了所有 http,一切正常!
在 mySql.
中使用 sql 查询很容易将 http 更改为 https
如果对大家有帮助,我来提问!
UPDATE table_name SET column_name = replace(column_name, '<img src="http://', '<img src="https://')
我遇到过同样的问题。在网络视图中,带有 http URL 的图像未加载到我的应用程序中。以下解决方案解决了我的问题,
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
但在Android9中,上述解决方案有时会抛出问题,在这种情况下,请在清单文件中添加以下行。
android:usesCleartextTraffic="true"
我的问题只是一张图片,没有在 webview 中加载。我只是添加了这两件事
在清单中
android:usesCleartextTraffic="true"
在java oncreate() 中添加
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mywebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
我正在尝试在 android 应用网页视图中加载网站。
站点加载时没有图像,站点中的所有图像都未加载可能是什么问题。
onCreate的代码如下所示。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
String url = getResources().getString(R.string.web_url);
web = (WebView) findViewById(R.id.webview01);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
web.setWebViewClient(new myWebClient());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setUseWideViewPort(true);
web.loadUrl(url);
}
请注意,当我使用 web.getSettings().setJavaScriptEnabled(false) 将 javascript 设置为 false 时;图片加载时发出警告,即 javascript 应正确启用 运行 站点。
此站点受 CloudFlare 保护,这可能是图像未加载到 android 网络视图中的原因吗?
添加
web.getSettings().setDomStorageEnabled(true);
这应该有效。其余的保持原样。
虽然需要注意,但我认为不建议默认启用它,默认情况下它是禁用的。该设置允许网站存储数据并重复使用。所以图片没有被加载,因为不允许该站点将它们存储在您的设备上。这引发了一系列安全问题。
我怀疑问题可能出在您的 webview 客户端上。 改用这个:
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Finished loading URL: " +url);
if (pDialog.isShowing()) {
pDialog.dismiss();
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(TAG, "Error: " + description);
Toast.makeText(FundCardWeb.this, "Page Load Error" + description, Toast.LENGTH_SHORT).show();
}
});
就用这行代码吧。我想你的问题会得到解决。
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
如果你懒加载内容,你可能也需要这个:
webView.getSettings().setJavaScriptEnabled(true);
只要这个就够了
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
对我来说,添加这些的组合做到了:
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setLoadsImagesAutomatically(true);
我不喜欢添加不必要的鳕鱼,所以我没有使用:
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
我在 Android 9.0 中遇到了类似的问题。站点 html 中的图像使用 http 而不是 https。 然后我用 https 更改了所有 http,一切正常! 在 mySql.
中使用 sql 查询很容易将 http 更改为 https如果对大家有帮助,我来提问!
UPDATE table_name SET column_name = replace(column_name, '<img src="http://', '<img src="https://')
我遇到过同样的问题。在网络视图中,带有 http URL 的图像未加载到我的应用程序中。以下解决方案解决了我的问题,
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
但在Android9中,上述解决方案有时会抛出问题,在这种情况下,请在清单文件中添加以下行。
android:usesCleartextTraffic="true"
我的问题只是一张图片,没有在 webview 中加载。我只是添加了这两件事
在清单中
android:usesCleartextTraffic="true"
在java oncreate() 中添加
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mywebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}