Как найти, доступно или нет подключение к Интернету на Android 4G?

#android

#Android

Вопрос:

Я использовал следующий код для определения того, доступно подключение к сети Intenet или нет, оно отлично работает до систем 3G. но это не работает для технологии 4G. У кого-нибудь есть идеи о том, как найти подключение к Интернету доступно или нет на 4g? если у какого-либо органа есть демокод для этого, пожалуйста, предоставьте его

Код:

 public static boolean checkConnection(Context c)
{
        ConnectivityManager mConnectivityManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
        TelephonyManager telephonyManager = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE);

        if(mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected() || telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED)
            return true;
        else
            return false;
    }
  

Заранее спасибо
Nirav modh

Ответ №1:

используйте TYPE_WIMAX
но это на уровне API 8

http://developer.android.com/reference/android/net/ConnectivityManager.html#TYPE_WIMAX

Комментарии:

1. Мои дорогие друзья, как проверить, доступно подключение LTE (4G) или нет? Здесь сеть 4G недоступна. Как это протестировать у вас есть какие-либо идеи по этому поводу?

2. если в вашей среде нет сети 4G / LTE, возможно, вам понадобится некоторое оборудование. Есть ли у вас устройства 4G / LTE? Если нет, почему вы хотите получить запрос / проблему такого рода? Или вам нужно имитировать среду 4g / LTE, но если у вас нет устройства 4G / LTE и сети, для чего это?

3. У меня есть устройство VZW LTE (HTC Thunderbolt), и я только что успешно протестировал, что оно работает только с TYPE_MOBILE.

Ответ №2:

 Context context = MainActivity.this;
    public synchronized static boolean isNetAvailable(Context context){

            boolean isNetAvailable=false;

            if ( context != null ){
                ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                if ( mgr != null ){
                    boolean mobileNetwork = false;
                    boolean wifiNetwork = false;
                    boolean wiMaxNetwork = false;

                    boolean mobileNetworkConnecetd = false;
                    boolean wifiNetworkConnecetd = false;
                    boolean wiMaxNetworkConnected = false;

                    NetworkInfo mobileInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                    NetworkInfo wifiInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                    NetworkInfo wiMaxInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX);

                    if ( mobileInfo != null )
                        mobileNetwork = mobileInfo.isAvailable();                   

                    if ( wifiInfo != null )
                        wifiNetwork = wifiInfo.isAvailable();

                    if(wiMaxInfo != null)
                        wiMaxNetwork = wiMaxInfo.isAvailable();

                    if(wifiNetwork == true || mobileNetwork == true || wiMaxNetwork == true){
                        mobileNetworkConnecetd = mobileInfo.isConnectedOrConnecting();
                        wifiNetworkConnecetd = wifiInfo.isConnectedOrConnecting();
                        wiMaxNetworkConnected = wiMaxInfo.isConnectedOrConnecting();
                    }
                    isNetAvailable = ( mobileNetworkConnecetd || wifiNetworkConnecetd || wiMaxNetworkConnected );
                }
            }
            return isNetAvailable;
        }
  

Проверка значения isNetAvailable истинна во всех 3 случаях, это работает для меня, желаю работать и для вас тоже

Примечание: Доступность 4G будет вводиться на уровне API 8 и далее.

Ответ №3:

Лучший способ проверить все подключения к Интернету — это короткий и точный код:

 public boolean isConnectingToInternet() {
ConnectivityManager connectivity = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
        NetworkInfo[] allNetworkInfo = connectivity.getAllNetworkInfo();
        if (allNetworkInfo != null)
            for (NetworkInfo info : allNetworkInfo)
                if (info.isConnectedOrConnecting()) {
                    return true;
                }
    }
    return false;
}
  

Ответ №4:

Попробуйте это:

 public static Boolean check_connection(final Context _context)
    {
        boolean connected;

        ConnectivityManager conectivtyManager = (ConnectivityManager) _context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (conectivtyManager.getActiveNetworkInfo() != null
                amp;amp; conectivtyManager.getActiveNetworkInfo().isAvailable()
                amp;amp; conectivtyManager.getActiveNetworkInfo().isConnected())
        {
            connected = true;

        } else
        {
            connected = false;
        }
        return connected;
    }
  

Ответ №5:

 public static boolean checkConnection(Context c)
{
    ConnectivityManager connectivityManager = (ConnectivityManager)
        getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
    if (activeNetInfo!=nullamp;amp;activeNetInfo.isConnected()){
        Log.e(TAG, "Net connected");
        return true;
    }else{
        Log.e(TAG, "Net Disconnected" );
        return false;
    }
}