Как определить, есть ли у пользователя 3G / Wifi перед установкой URL-соединения? - PullRequest
6 голосов
/ 10 сентября 2010

Я не хочу, чтобы мое приложение зависало, если у пользователя нет подключения к Wi-Fi или 3G.Как я могу поймать это во время выполнения в моем приложении?

Ответы [ 2 ]

7 голосов
/ 10 сентября 2010

Сначала получите ссылку на ConnectivityManager, а затем проверьте состояние Wi-Fi и 3G устройства. Вам понадобится разрешение ACCESS_NETWORK_STATE, чтобы использовать этот сервис.

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

    if (mWifi.isConnected() == false && mMobile.isConnected() == false) {
        showDialog(DIALOG_NETWORK_UNAVAILABLE);
    }
1 голос
/ 23 апреля 2017

connManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI) устарела.

Ниже приведено улучшенное решение для последней версии Android SDK.

ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
        boolean is3gEnabled = false;
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Network[] networks = connManager.getAllNetworks();
            for(Network network: networks)
            {
                NetworkInfo info = connManager.getNetworkInfo(network);
                if(info!=null) {
                    if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                        is3gEnabled = true;
                        break;
                    }
                }
            }
        }
        else
        {
            NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if(mMobile!=null)
                is3gEnabled = true;
        }
...