首页 > 解决方案 > 如何在Android 中连续检查Internet 连接| 爪哇 | 安卓工作室

问题描述

我在 android studio 421 工作了几天,我对 android 开发非常陌生。在这里我需要检查互联网连接,如果有互联网,我需要显示一个网页,如果没有互联网,我需要显示一个警告框,提示“找不到互联网连接”。这是我到目前为止所做的代码。

package com.example.x;


import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends AppCompatActivity {



    public void onBackPressed()
    {
        if(web.canGoBack())
            web.goBack();
    }


    WebView web;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        web = findViewById(R.id.webView);
        WebSettings webSettings = web.getSettings();
        webSettings.setJavaScriptEnabled(true);
        web.setWebChromeClient(new WebChromeClient());
        web.loadUrl(getString(R.string.u));
        web.setWebViewClient(new WebViewClient());


    }






    private class Callback extends WebViewClient {
        @Override
        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
            return true;
        }
    }

}

但是当没有互联网连接时,警报不会显示。

我已启用

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在 AndroidManifest.xml 中。我被困在这里,我不知道下一步该怎么做。我google了很多,但找不到答案。谁能帮帮我吗?

标签: javaandroidwebviewconnection

解决方案


我需要检查互联网连接,如果有互联网,我需要显示一个网页,如果没有互联网,我需要显示一个警告框,提示“找不到互联网连接”。

所以,这与问题标题有些矛盾(不断观察互联网连接)

因此,如果您只需要检查互联网连接是否可用,您可以Context.CONNECTIVITY_SERVICE通过触发使用系统服务进行检查,connectivityMgr.getActiveNetworkInfo()但由于 API-21 已弃用,您需要将其迁移到connectivityMgr.getAllNetworks()

将其集成到实用程序方法中:

public boolean isOnline(Context context) {

    boolean isConnected = false;
    ConnectivityManager   mConnectivityMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
        // Checking internet connectivity
        NetworkInfo activeNetwork = null;
        if (mConnectivityMgr != null) {
            activeNetwork = mConnectivityMgr.getActiveNetworkInfo(); // Deprecated in API 29
        }
        isConnected = activeNetwork != null;

    } else {
        Network[] allNetworks = mConnectivityMgr.getAllNetworks(); // added in API 21 (Lollipop)

        for (Network network : allNetworks) {
            NetworkCapabilities networkCapabilities = mConnectivityMgr.getNetworkCapabilities(network);
            if (networkCapabilities != null) {
                if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                        || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                        || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET))
                    isConnected = true;
            }
        }
    }

    return isConnected;

}

然后你可以这样做:

if (isOnline(MainActivity.this)) {
    // display a webpage
} else {
    // display an alert box saying 
}

推荐阅读