簡體   English   中英

檢查網絡是否連接(wifi或移動數據)android java

[英]Checking if network is connect (wifi or mobile data) android java

我目前正在檢測WIFI是否使用以下代碼連接:

        BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int wifiStateExtra = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
                    WifiManager.WIFI_STATE_UNKNOWN);
            Log.v("Log","Wifi Toggled");

        }
    };

    IntentFilter intentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
    context.registerReceiver(wifiStateReceiver, intentFilter);

    wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

每當打開或關閉 wifi 時,此代碼當前都會告訴我。 我正在尋找這樣的東西,它會在我的網絡狀態發生變化時向我發送通知,即當我連接或沒有連接(wifi 或移動數據)到互聯網時。 有沒有像我可以使用的 NetworkManger 之類的東西來告訴我網絡狀態是否發生了變化?

Android Internet 連接檢查 API 29+

private static final String DEBUG_TAG = "NetworkStatusExample";

ConnectivityManager connMgr =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isWifiConn = false;
boolean isMobileConn = false;
for (Network network : connMgr.getAllNetworks()) {
    NetworkInfo networkInfo = connMgr.getNetworkInfo(network);
    if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
        isWifiConn |= networkInfo.isConnected();
    }
    if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
        isMobileConn |= networkInfo.isConnected();
    }
}
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);

查看確定和監控連接狀態的官方文檔。

確定您是否有互聯網連接

ConnectivityManager cm =
 (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

確定您的互聯網連接類型

(設備連接可以通過移動數據、WiMAX、Wi-Fi 和以太網連接提供)

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

監控連接的變化

面向 Android 7.0(API 級別 24)及更高版本的應用如果在其清單中聲明了廣播接收器,則不會收到 CONNECTIVITY_ACTION 廣播。 如果應用程序使用 Context.registerReceiver() 注冊它們的 BroadcastReceiver 並且該上下文仍然有效,它們仍將接收 CONNECTIVITY_ACTION 廣播。

    val connMgr = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager

    var isWifiConn = false
    var isMobileConn = false
    for (network in connMgr.allNetworks) {
        val networkInfo = connMgr.getNetworkInfo(network)
        if (networkInfo!!.type == ConnectivityManager.TYPE_WIFI) {
            isWifiConn = isWifiConn or networkInfo!!.isConnected
        }
        if (networkInfo!!.type == ConnectivityManager.TYPE_MOBILE) {
            isMobileConn = isMobileConn or networkInfo!!.isConnected
        }
    }
    Log.d("DEBUG_TAG", "Wifi connected: $isWifiConn")
    Log.d("DEBUG_TAG", "Mobile connected: $isMobileConn")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM