Detect network connection type on Android

前端 未结 14 1322
后悔当初
后悔当初 2020-11-22 05:55

How do you detect the network connection type on Android?

Is it through ConnectivityManager.getActiveNetworkInfo().getType(), and is the answer limited

14条回答
  •  没有蜡笔的小新
    2020-11-22 06:34

    Shown below different ways to do that. Please, note that there are a lot of network types in ConnectivityManager class. Also, if API >= 21, you can check the network types in NetworkCapabilities class.

        ConnectivityMonitor connectivityMonitor = ConnectivityMonitor.getInstance(this);
        boolean isWiFiConnected = connectivityMonitor.isWifiConnection();
        boolean isMobileConnected = connectivityMonitor.isConnected(ConnectivityManager.TYPE_MOBILE);
        Log.e(TAG, "onCreate: isWiFiConnected " + isWiFiConnected);
        Log.e(TAG, "onCreate: isMobileConnected " + isMobileConnected);
        ConnectivityMonitor.Listener connectivityListener = new ConnectivityMonitor.Listener() {
            @Override
            public void onConnectivityChanged(boolean connected, @Nullable NetworkInfo networkInfo) {
                Log.e(TAG, "onConnectivityChanged: connected " + connected);
                Log.e(TAG, "onConnectivityChanged: networkInfo " + networkInfo);
                if (networkInfo != null) {
                    boolean isWiFiConnected = networkInfo.getType() == NetworkCapabilities.TRANSPORT_WIFI;
                    boolean isMobileConnected = networkInfo.getType() == NetworkCapabilities.TRANSPORT_CELLULAR;
                    Log.e(TAG, "onConnectivityChanged: isWiFiConnected " + isWiFiConnected);
                    Log.e(TAG, "onConnectivityChanged: isMobileConnected " + isMobileConnected);
                }
            }
        };
        connectivityMonitor.addListener(connectivityListener);
    

提交回复
热议问题