繁体   English   中英

互联网连接可用时正在加载离线页面

[英]Offline Page is getting loaded when internet connection is available

尝试构建/测试具有在线和离线功能的 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 应用程序。

但即使互联网连接可用,它也总是加载离线页面。

文件

这不足以检查互联网连接,你可以试试这个

public class NetworkState {

    public Boolean isNetworkAvailable(Context context)  {
        if (context == null)
            return false;
        ConnectivityManager connectivityManager =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities =
                    connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            if (capabilities != null) {
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                    return true;
                } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                    return true;
                } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
                    return true;
                }
            }
        } else {
            try {
                NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
                if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
//                        Log.i("update_statut", "Network is available : true")
                    return true;
                }
            } catch ( Exception e) {

            }
        }
        Log.e("update_statut", "Network is available : FALSE ");
        return false;
    }
}

然后检查您的连接

 NetworkState networkState =new NetworkState();
if (networkState.isNetworkAvailable(this)) {
            //You are online
}else{
        //You are offline
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM