【发布时间】:2022-01-18 10:07:19
【问题描述】:
尝试构建/测试具有在线和离线功能的 android WebView 应用程序。
但即使有互联网连接,它也总是加载离线页面。
MainActivity.java:
package com.trial_test.app;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import java.net.InetAddress;
public class MainActivity extends Activity {
private WebView mWebView;
@Override
@SuppressLint("SetJavaScriptEnabled")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new MyWebViewClient());
if (isNetworkConnected()) {
boolean is_test = isInternetAvailable();
if (isInternetAvailable()) {
// REMOTE RESOURCE
mWebView.loadUrl("https://example.com");
} else {
// LOCAL RESOURCE
mWebView.loadUrl("file:///android_asset/index.html");
}
} else {
// LOCAL RESOURCE
mWebView.loadUrl("file:///android_asset/index.html");
}
}
@Override
public void onBackPressed() {
if(mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
}
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
public boolean isInternetAvailable() {
try {
InetAddress ipAddr = InetAddress.getByName("google.com");
//You can replace it with your name
return ipAddr.equals("");
} catch (Exception e) {
return false;
}
}
}
尝试构建/测试具有在线和离线功能的 android WebView 应用程序。
但即使有互联网连接,它也总是加载离线页面。
尝试构建/测试具有在线和离线功能的 android WebView 应用程序。
但即使有互联网连接,它也总是加载离线页面。
【问题讨论】:
标签: java android android-studio webview inet