Як дізнатися, чи підключений Wi-Fi на Android?


237

Я не хочу, щоб мій користувач навіть намагався завантажити щось, якщо у них підключений Wi-Fi. Однак я можу лише здатися, що я можу сказати, чи включений Wi-Fi, але вони все ще можуть мати 3G-з'єднання.

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
    return false;
}

Однак держава - це не те, чого я б очікував. Незважаючи на те, що Wi-Fi підключений, я отримую OBTAINING_IPADDRстатус держави.

Відповіді:


463

Ви повинні мати можливість використовувати ConnectivityManager, щоб отримати стан адаптера Wi-Fi. Звідти ви можете перевірити, чи він підключений чи навіть доступний .

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {
    // Do whatever
}

ПРИМІТКА. Слід зазначити (для нас тут n00bies), що вам потрібно додати

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

твоєму

AndroidManifest.xml для цього працює.

ПРИМІТКА2 : public NetworkInfo getNetworkInfo (int networkType)тепер застаріло:

Цей метод був застарілий на рівні 23 API. Цей метод не підтримує декілька підключених мереж одного типу. Використовуйте замість getAllNetworks () та getNetworkInfo (android.net.Network).

ПРИМІТКА3 : public static final int TYPE_WIFIтепер застаріло:

Ця константа була застаріла в рівні API 28. Замість цього програми повинні використовувати NetworkCapa sposobnosti.hasTransport (int) або requestNetwork (NetworkRequest, NetworkCallback) для запиту відповідної мережі. для підтримуваних перевезень.


72
Слід зазначити (для нас тут нобіїв), що для цього вам потрібно додати android.permission.ACCESS_NETWORK_STATEсвій AndroidManifest.xml.
mgalgs

10
У дуже останніх версіях Android вам потрібно перевірити наявність NULL в mWiFi ... ваш код тут може призвести до помилки нульового вказівника. Див. Розробник.android.com/ training/basics/network-ops/managing.html і зокрема "Метод getActiveNetworkInfo () повертає NetworkInfo ..."
eb80

1
Він працював і для мене з інтерфейсом Ethernet. Щойно я змінив на ConnectivityManager.TYPE_ETHERNET
MBH

3
Метод NetworkInfo.isConnected () тепер застарілий в API-23. Я розміщую рішення нижче.
революційний

1
NetworkInfo.getType () та ConnectivityManager.TYPE_WIFI тепер застаріли в API 28. Щоб уникнути попередження про ворсинки, вам слід використовувати щось на кшталтconnectivityManager.getNetworkCapabilities(network).hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
Vadik

75

Оскільки метод NetworkInfo.isConnected () тепер застарілий в API-23 , ось метод, який визначає, чи адаптер Wi-Fi увімкнено, а також підключений до точки доступу, використовуючи замість нього WifiManager:

private boolean checkWifiOnAndConnected() {
    WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON

        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();

        if( wifiInfo.getNetworkId() == -1 ){
            return false; // Not connected to an access point
        }
        return true; // Connected to an access point
    }
    else {
        return false; // Wi-Fi adapter is OFF
    }
}

4
Варто зазначити, що wifiInfo може бути недійсним, тому я думаю, що ви повинні перевірити наявність null, перш ніж отримати ідентифікатор мережі
Nonos

2
NetworkInfo.isConnected()мені не здається застарілим.
EricRobertBrewer

Не забудьте додати дозвіл:android.permission.ACCESS_WIFI_STATE
Ton Snoei

1
Це більше не працюватиме в Android Q без включеного дозволу на місцезнаходження та ввімкненого режиму розташування, див. Issueetracker.google.com/isissue/136021574 .
Konsumierer

@EricRobertBrewer коментар більше не актуальний. тепер застарілий API 29+.
nuKs

35

Я просто використовую таке:

SupplicantState supState; 
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
supState = wifiInfo.getSupplicantState();

Який поверне один із цих станів під час виклику getSupplicantState ();

АСОЦІЙНО - Асоціація завершена.

АСОЦІАЦІЯ - Спроба зв’язатися з точкою доступу.

ЗАВЕРШЕНО - Все аутентифікацію завершено.

ВІДКЛЮЧЕНО - Цей стан вказує, що клієнт не асоційований, але, ймовірно, почне шукати точку доступу.

DORMANT - стан, доданий Android, повідомляється, коли клієнт видає явну команду DISCONNECT.

FOUR_WAY_HANDSHAKE - Виконується рукостискання 4-х клавішної WPA WPA.

GROUP_HANDSHAKE - Ключ рукостискання групи WPA.

НЕАКТИВНИЙ - неактивний стан.

ІНВАЛІД - Псевдодержава, яку зазвичай не слід бачити.

СКАНУВАННЯ - Сканування мережі.

UNINITIALIZED - Немає з'єднання.


привіт Donal.Я використовував той самий спосіб, щоб дізнатися, чи підключений наш пристрій до wifi. Але додатково мені потрібно знати ім’я додатка, яке зараз використовується WIFI. Як це можна зробити?
AbhishekB

@AbhishekB, вибачте, але я не маю жодного досвіду з цим, можливо, спробуйте переглядати деякі програми моніторингу Wi-Fi, перевірте, чи є відкритий код, де ви можете переглянути код.
Donal Rafferty

Я підозрюю це рішення, оскільки суплікант використовується лише у тому випадку, якщо використовується WPA (або деяка зміна WPA): якщо користувач підключається до AP без автентифікації або WEP, то молитель не задіяний.
Том

2
Це все ще відображається як "ЗАВЕРШЕНО", хоча я не на wifi
Еван Парсонс,

1
чи є якийсь намір системного мовлення для вищезгаданих станів? @DonalRafferty
Rohit Singh

19

Я використовую це у своїх додатках, щоб перевірити, чи є активною мережею Wi-Fi:

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null && ni.getType() == ConnectivityManager.TYPE_WIFI)
{

    // Do your work here

}

Це найкраща відповідь, оскільки вона гарантує, що activeмережа (та, яка буде використовуватися для завантаження) - WiFi
Гавриель

1
Це також найкраща відповідь, яка NetworkInfo#isConnectedзастаріла
Tash Pemhiwa

Однозначно найкраща відповідь на цей рік (2017).
Даніель Нугент

18

Я переглянув кілька таких питань і придумав таке:

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

if (wifi.isConnected()){
    // If Wi-Fi connected
}

if (mobile.isConnected()) {
    // If Internet connected
}

Я використовую, якщо для моєї перевірки ліцензії в Root Toolbox PRO, і, здається, вона працює чудово.


8
виглядає добре, але я не впевнений, чому ви отримуєте другу посилання на ConnectivityManager. У цьому прикладі connManager та connManager1 є тим самим Об'єктом
Натан Шверман

1
Чи означає TYPE_MOBLIE 3gnet чи gprs net?
herbertD

1
TYPE_MOBILE означає будь-які дані, що використовують ваш оператор - 2G (GPRS ...), 3G (HSDPA ...) або 4G (LTE ...).
Євген Печанець

1
Ви можете додати TYPE_ETHERNET, який справно працював під час підключення Android до Ethernet
MBH

1
Варто пам’ятати, що getNetworkInfo()поверне нуль, якщо мережа не існує. Тож якщо у пристрою немає мобільного зв’язку, це призведе до помилки. У більшості випадків TYPE_ETHERNET призведе до нуля в цьому випадку, оскільки більшість пристроїв не матиме з'єднання Ethernet.
Knossos

7

Хоча відповідь Джейсона правильна, в даний час getNetWorkInfo (int) є застарілим методом. Отже, наступна функція буде приємною альтернативою:

public static boolean isWifiAvailable (Context context)
{
    boolean br = false;
    ConnectivityManager cm = null;
    NetworkInfo ni = null;

    cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    ni = cm.getActiveNetworkInfo();
    br = ((null != ni) && (ni.isConnected()) && (ni.getType() == ConnectivityManager.TYPE_WIFI));

    return br;
}

3

Використовуючи WifiManagerви можете:

WifiManager wifi = (WifiManager) getSystemService (Context.WIFI_SERVICE);
if (wifi.getConnectionInfo().getNetworkId() != -1) {/* connected */}

Метод getNeworkId повертає -1 лише тоді, коли він не підключений до мережі;


WIFI_STATE_DISABLED Константа Значення: 1 (0x00000001) WIFI_STATE_DISABLING Константа Значення: 0 (0x00000000) WIFI_STATE_ENABLED Константа Значення: 3 (0x00000003) WIFI_STATE_ENABLING постійне значення: 2 (0x00000002) WIFI_STATE_UNKNOWN Константа Значення: 4 (0x00000004)
Лу Morda


Це більше не працюватиме в Android Q без включеного дозволу на місцезнаходження та ввімкненого режиму розташування, див. Issueetracker.google.com/isissue/136021574 .
Konsumierer

3
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
boolean is3g = manager.getNetworkInfo(
                  ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
boolean isWifi = manager.getNetworkInfo(
                    ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();

Log.v("", is3g + " ConnectivityManager Test " + isWifi);
if (!is3g && !isWifi) {
    Toast.makeText(
        getApplicationContext(),
        "Please make sure, your network connection is ON ",
        Toast.LENGTH_LONG).show();
}
else {
    // Put your function() to go further;
}

1
було б краще додати трохи пояснень, а не просто код.
EdChum

2
Я б використав isConnected () , документи говорять: boolean isConnectedOrConnecting ()Вказує, чи існує мережне підключення або є процес встановлення. Це добре для додатків, яким потрібно робити що-небудь, пов’язане з мережею, крім читання або запису даних. Для останнього виклик isConnected()натомість, що гарантує, що мережа є повністю доступною.
18446744073709551615

3

Наступний код (у Котліні) працює від API 21 до принаймні поточної версії API (API 29). Функція getWifiState () повертає одне з 3 можливих значень для стану мережі WiFi: Вимкнути, Увімкнено, Не З'єднано та З'єднано, які були визначені у перерахунку класу. Це дозволяє приймати більш детальні рішення, такі як інформування користувача про включення Wi-Fi або, якщо це вже ввімкнено, підключення до однієї з доступних мереж. Але якщо все, що потрібно, - це булеве вказівка ​​того, що WiFi-інтерфейс підключений до мережі, то інша функція isWifiConnected () дасть вам це. Він використовує попередній і порівнює результат з підключеним.

Це надихається в деяких попередніх відповідях, але намагається вирішити проблеми, пов'язані з еволюцією API Android або повільно зростаючою доступністю IP V6. Хитрість полягає у використанні:

wifiManager.connectionInfo.bssid != null 

замість:

  1. getIpAddress () == 0, що дійсне лише для IP V4 або
  2. getNetworkId () == -1, що вимагає іншого спеціального дозволу (Місцезнаходження)

Відповідно до документації: https://developer.android.com/reference/kotlin/android/net/wifi/WifiInfo.html#getbssid вона поверне нуль, якщо не підключена до мережі. І навіть якщо ми не маємо дозволу отримати реальне значення, воно все одно поверне щось інше, ніж нульове, якщо ми підключені.

Майте також на увазі наступне:

Під час випусків перед android.os.Build.VERSION_CODES # N цей об'єкт повинен бути отриманий тільки з контексту # getApplicationContext (), а не з будь-якого іншого похідного контексту, щоб уникнути витоку пам'яті в процесі виклику.

У Маніфест не забудьте додати:

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

Пропонований код:

class MyViewModel(application: Application) : AndroidViewModel(application) {

   // Get application context
    private val myAppContext: Context = getApplication<Application>().applicationContext

   // Define the different possible states for the WiFi Connection
    internal enum class WifiState {
        Disabled,               // WiFi is not enabled
        EnabledNotConnected,    // WiFi is enabled but we are not connected to any WiFi network
        Connected,              // Connected to a WiFi network
    }

    // Get the current state of the WiFi network
    private fun getWifiState() : WifiState {

        val wifiManager : WifiManager = myAppContext.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager

        return if (wifiManager.isWifiEnabled) {
                    if (wifiManager.connectionInfo.bssid != null)
                        WifiState.Connected
                    else
                        WifiState.EnabledNotConnected
               } else {
                    WifiState.Disabled
               }
    }

    // Returns true if we are connected to a WiFi network
    private fun isWiFiConnected() : Boolean {
        return (getWifiState() == WifiState.Connected)
    }
}

3

NetworkInfoКлас небажаний рівня API 29, поряд з методами пов'язаних з доступом , як ConnectivityManager#getNetworkInfo()і ConnectivityManager#getActiveNetworkInfo().

Тепер документація пропонує людям використовувати ConnectivityManager.NetworkCallbackAPI для асинхронізованого моніторингу зворотного виклику або використовувати ConnectivityManager#getNetworkCapabilitiesабо ConnectivityManager#getLinkPropertiesдля синхронізованого доступу до мережевої інформації

Абоненти повинні замість цього використовувати API ConnectivityManager.NetworkCallback, щоб дізнатися про зміни підключення, або перейти на використання ConnectivityManager # getNetworkCapability або ConnectivityManager # getLinkProperties для отримання інформації синхронно.


Щоб перевірити, чи підключений Wi-Fi, ось код, який я використовую:

Котлін:

val connMgr = applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
connMgr?: return false
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    val network: Network = connMgr.activeNetwork ?: return false
    val capabilities = connMgr.getNetworkCapabilities(network)
    return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
} else {
    val networkInfo = connMgr.activeNetworkInfo ?: return false
    return networkInfo.isConnected && networkInfo.type == ConnectivityManager.TYPE_WIFI
}

Java:

ConnectivityManager connMgr = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (connMgr == null) {
    return false;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Network network = connMgr.getActiveNetwork();
    if (network == null) return false;
    NetworkCapabilities capabilities = connMgr.getNetworkCapabilities(network);
    return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
} else {
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return networkInfo.isConnected() && networkInfo.getType() == ConnectivityManager.TYPE_WIFI;
}

Не забудьте додати дозвіл ACCESS_NETWORK_STATEна файл Manifest.


2

Спробуйте цей метод.

public boolean isInternetConnected() {
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    boolean ret = true;
    if (conMgr != null) {
        NetworkInfo i = conMgr.getActiveNetworkInfo();

        if (i != null) {
            if (!i.isConnected()) {
                ret = false;
            }

            if (!i.isAvailable()) {
                ret = false;
            }
        }

        if (i == null)
            ret = false;
    } else
        ret = false;
    return ret;
}

Цей метод допоможе знайти доступ до Інтернету чи ні.


1
Я спеціально шукав, чи активне з'єднання - це wifi. Крім того, не потрібно робити нульову перевірку conMgr, вона ніколи не буде нульовою.
Натан Шверман

Чи можете ви перевірити це питання, будь ласка? :(
Skizo-ozᴉʞS

2

Це працює для мене:

    ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    // Mobile
    State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();

    // Wi-Fi
    State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();

    // And then use it like this:

    if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING)
    {
        Toast.makeText(Wifi_Gprs.this,"Mobile is Enabled :) ....",Toast.LENGTH_LONG).show();
    }
    else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING)
    {
        Toast.makeText(Wifi_Gprs.this,"Wifi is Enabled  :) ....",Toast.LENGTH_LONG).show();
    }
    else
    {
        Toast.makeText(Wifi_Gprs.this,"No Wifi or Gprs Enabled :( ....",Toast.LENGTH_LONG).show();
    }

І додайте цей дозвіл:

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

2

У багатьох відповідях використовується застарілий код або код, доступний у більш високих версіях API. Зараз я використовую щось подібне

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if(connectivityManager != null) {
            for (Network net : connectivityManager.getAllNetworks()) {
                NetworkCapabilities nc = connectivityManager.getNetworkCapabilities(net);
                if (nc != null && nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                        && nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET))
                    return true;
            }
        }
        return false;

1

Ось що я використовую як корисний метод у своїх додатках:

public static boolean isDeviceOnWifi(final Context context) {
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        return mWifi != null && mWifi.isConnectedOrConnecting();
}

Добре зазначити, що метод isConnectedOrConnecting важливий під час перевірки встановлення з'єднання. Метод IsConnected не працював для мене.
Вінсент

1

У новій версії Android

private void getWifiInfo(Context context) {
    ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = connManager.getAllNetworks();

    if(networks == null || networks.length == 0)
        return;

    for( int i = 0; i < networks.length; i++) {
        Network ntk = networks[i];
        NetworkInfo ntkInfo = connManager.getNetworkInfo(ntk);
        if (ntkInfo.getType() == ConnectivityManager.TYPE_WIFI && ntkInfo.isConnected() ) {
            final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
            if (connectionInfo != null) {
                // add some code here
            }
        }

    }
}

і додайте також допущення


connManager.getAllNetworks()потрібен рівень 21.
Джаванд Сінгх

1

Схожа на відповідь @Jason Knight, але по-котлінському:

val connManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)

if (mWifi.isConnected) {
     // Do whatever
}

ConnectivityManager.TYPE_WIFIзастаріло
Jérôme Pietri

0

Це простіше рішення. Див. Запитання щодо переповнення стека. Перевірка підключеного Wi-Fi у Android чи ні .

PS Не забудьте додати код у файл manifest.xml, щоб отримати дозвіл. Як показано нижче.

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

0

Спробуйте

wifiManager.getConnectionInfo().getIpAddress()

Це повертає 0 до тих пір, поки пристрій не зможе використовувати підключення (на моїй машині - Samsung SM-T280, Android 5.1.1).


0

Ви можете увімкнути WIFI, якщо він не активований так: 1. Перевірте стан WIFI, як відповів @Jason Knight 2. Якщо його не активовано, активуйте його, не забудьте додати дозвіл WIFI у файл маніфесту

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

Ваш клас Java повинен бути таким

public class TestApp extends Activity {
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //check WIFI activation
    ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (mWifi.isConnected() == false) {
        showWIFIDisabledAlertToUser();
    }
    else {
        Toast.makeText(this, "WIFI is Enabled in your devide", Toast.LENGTH_SHORT).show();
    }
}


private void showWIFIDisabledAlertToUser(){
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setMessage("WIFI is disabled in your device. Would you like to enable it?")
            .setCancelable(false)
            .setPositiveButton("Goto Settings Page To Enable WIFI",
                    new DialogInterface.OnClickListener(){
                        public void onClick(DialogInterface dialog, int id){
                            Intent callGPSSettingIntent = new Intent(
                                    Settings.ACTION_WIFI_SETTINGS);
                            startActivity(callGPSSettingIntent);
                        }
                    });
    alertDialogBuilder.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog, int id){
                    dialog.cancel();
                }
            });
    AlertDialog alert = alertDialogBuilder.create();
    alert.show();
}

}


0

Додайте це для JAVA:

public boolean CheckWifiConnection() {
        ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
        if (conMgr.getActiveNetworkInfo() != null
                && conMgr.getActiveNetworkInfo().isAvailable()
                && conMgr.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            return false;
        }
    }

у файл Manifest додайте такі дозволи:

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

0

Вигляд старого питання, але це те, що я використовую. вимагає мінімуму api рівень 21 також враховує застарілу мережеву інформацію apis.

boolean isWifiConn = false;
    ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Network network = connMgr.getActiveNetwork();
        if (network == null) return false;
        NetworkCapabilities capabilities = connMgr.getNetworkCapabilities(network);
        if(capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
            isWifiConn = true;
            Toast.makeText(context,"Wifi connected Api >= "+Build.VERSION_CODES.M,Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(context,"Wifi not connected Api >= "+Build.VERSION_CODES.M,Toast.LENGTH_LONG).show();
        }
    } else {
        for (Network network : connMgr.getAllNetworks()) {
            NetworkInfo networkInfo = connMgr.getNetworkInfo(network);
            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI && networkInfo.isConnected()) {
                isWifiConn = true;
                Toast.makeText(context,"Wifi connected ",Toast.LENGTH_LONG).show();
                break;
            }else{
                Toast.makeText(context,"Wifi not connected ",Toast.LENGTH_LONG).show();
            }
        }
    }
    return isWifiConn;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.