package com.example.casts;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import android.widget.Toast;
public class WebMainActivity extends AppCompatActivity {
private WebView webView;
private String url="http://www.baidu.com";
private TextView s1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_main);
webView = findViewById(R.id.web);
s1 = findViewById(R.id.s1);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);//获取ConnectivityManager实例
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();//获取NetworkInfo实例
// 设置 缓存模式
if(networkInfo != null && networkInfo.isAvailable()){//判断网络是否可用
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
Toast.makeText(WebMainActivity.this,"有网络",Toast.LENGTH_SHORT).show();
}else{
webView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
Toast.makeText(WebMainActivity.this,"无网络",Toast.LENGTH_SHORT).show();
}
initView();
}
private void initView() {
try {
webView.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView view, String url) {
Log.i("tag", "onLoadResource url=" + url); // 开始加载
super.onLoadResource(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView webview,
String url) {
Log.i("tag", "intercept url=" + url);
// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
webview.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
String title = view.getTitle(); // 得到网页标题
s1.setText(title);
Log.e("tag", "onPageFinished WebView title=" + title);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Toast.makeText(getApplicationContext(), "加载错误",
Toast.LENGTH_LONG).show();
}
});
webView.loadUrl(url);
} catch (Exception e) {
return;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack(); // goBack()表示返回WebView的上一页面
return true;
} else {
finish();
}
return super.onKeyDown(keyCode, event);
}
/***
* 防止WebView加载内存泄漏
*/
@Override
protected void onDestroy() {
super.onDestroy();
webView.removeAllViews();
webView.destroy();
}
}
Android WebView交互带缓存与网络判断
最新推荐文章于 2024-04-01 11:03:59 发布