在Android的WebView中展示网络图片的方法如下:
1.在AndroidManifest.xml文件中添加网络权限。
<uses-permission android:name="android.permission.INTERNET" />
2.在WebView的Settings中设置JavaScriptEnabled和DomStorageEnabled为true以便JS的执行。
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
3.在WebViewClient的onPageFinished方法中执行JavaScript脚本以替换图片的URL。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String js = "javascript:(function() { " +
"var imgs = document.getElementsByTagName('img');" +
"for (var i = 0; i < imgs.length; i++) {" +
" var img = imgs[i]; " +
" img.src = img.src.replace(/^http:/, 'https:');" +
"}})();";
view.loadUrl(js);
}
});
webView.loadUrl("https://www.example.com");
其中将图片URL的http协议替换为https协议是为了保证安全性,避免被第三方劫持。
在Android中使用WebView加载网络图片需要注意以下几点:
- 需要添加网络权限
在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
- 需要开启WebView的JavaScript支持
在MainActivity.java中的onCreate()方法中添加以下代码:
webView.getSettings().setJavaScriptEnabled(true);
- 需要使用WebViewClient并重写shouldOverrideUrlLoading()方法
在MainActivity.java中的onCreate()方法中添加以下代码:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
- 在HTML代码中使用网络图片链接
在HTML代码中引用网络图片的时候,需要使用完整的网络图片链接,例如:
<img src="https://www.example.com/images/sample.jpg" />
完整代码如下:
MainActivity.java
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
String html = "<html><body><h1>网络图片测试</h1><img src="https://www.example.com/images/sample.jpg" /></body></html>";
webView.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/158035.html