wake-up-neo.net

Android: Prüfen Sie, ob das 3G- oder WLAN-Netzwerk eingeschaltet oder verfügbar ist oder nicht auf einem Android-Gerät

Wie kann man überprüfen, ob das Netzwerk auf Android-Geräten programmatisch verfügbar ist oder nicht, so wird beim Versuch, eine Verbindung mit einem Netzwerk wie Wifi & 3G herzustellen, eine Nachricht oder eine Toast-Nachricht ausgegeben.

12
Rahul Baradia

Um zu prüfen, ob Netzwerk, z. B. 3G oder WiFi, verfügbar ist oder nicht, können wir die folgenden Methoden verwenden, um zu überprüfen, bevor wir unsere Aktivitäten beginnen. 

ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

//For 3G check
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
            .isConnectedOrConnecting();
//For WiFi Check
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
            .isConnectedOrConnecting();

System.out.println(is3g + " net " + isWifi);

if (!is3g && !isWifi) 
{ 
Toast.makeText(getApplicationContext(),"Please make sure your Network Connection is ON ",Toast.LENGTH_LONG).show();
} 
 else 
{ 
        " Your method what you want to do "
} 

Hoffe das hilft jemandem.

47
Rahul Baradia
final ConnectivityManager connMgr = (ConnectivityManager)
    this.getSystemService(Context.CONNECTIVITY_SERVICE);

    final Android.net.NetworkInfo wifi =
    connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    final Android.net.NetworkInfo mobile =
    connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if( wifi.isAvailable() && wifi.getDetailedState() == DetailedState.CONNECTED){
        Toast.makeText(this, "Wifi" , Toast.LENGTH_LONG).show();
    }
    else if( mobile.isAvailable() && mobile.getDetailedState() == DetailedState.CONNECTED ){
        Toast.makeText(this, "Mobile 3G " , Toast.LENGTH_LONG).show();
    }
    else
    {   
        Toast.makeText(this, "No Network " , Toast.LENGTH_LONG).show();
    }

Überprüfen Sie diesen Code, wenn Sie mit WLAN oder 3G oder nichts sind. Wenn WLAN aktiviert ist, aber nicht mit einem Netz verbunden ist oder 3G ein Signalproblem hat, erkennt es diese Details mit DetailedStates

6
Agustin Gandara

Diese Arbeit für mich 

NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();   
String name networkInfo.getTypeName();  
3
benoffi7

Mit dieser Methode können Sie überprüfen, ob Ihre Internetverbindung 2G, 3G oder 4G ist: 

public String getNetworkClass(Context context) {
    TelephonyManager mTelephonyManager = (TelephonyManager)
            context.getSystemService(Context.TELEPHONY_SERVICE);
    int networkType = mTelephonyManager.getNetworkType();
    switch (networkType) {
        case TelephonyManager.NETWORK_TYPE_GPRS:
        case TelephonyManager.NETWORK_TYPE_Edge:
        case TelephonyManager.NETWORK_TYPE_CDMA:
        case TelephonyManager.NETWORK_TYPE_1xRTT:
        case TelephonyManager.NETWORK_TYPE_IDEN:
            return "2G";
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_EVDO_0:
        case TelephonyManager.NETWORK_TYPE_EVDO_A:
        case TelephonyManager.NETWORK_TYPE_HSDPA:
        case TelephonyManager.NETWORK_TYPE_HSUPA:
        case TelephonyManager.NETWORK_TYPE_HSPA:
        case TelephonyManager.NETWORK_TYPE_EVDO_B:
        case TelephonyManager.NETWORK_TYPE_EHRPD:
        case TelephonyManager.NETWORK_TYPE_HSPAP:
            return "3G";
        case TelephonyManager.NETWORK_TYPE_LTE:
            return "4G";
        default:
            return "Unknown";
    }
}

Und mit der folgenden Methode können Sie prüfen, ob Internet verfügbar ist oder nicht , und Sie können feststellen, ob Sie über ein Mobilfunknetz oder WiFi auf das Internet zugreifen.

public String getNetworkType(Context context){
    String networkType = null;
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
    if (activeNetwork != null) { // connected to the internet
        if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
                networkType = "WiFi";
        } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
            networkType = "Mobile";
        }
    } else {
        // not connected to the internet
    }
    return networkType;
}
3
zeeali

Rahul Baradias Antwort umfasst manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) und ist veraltet.

Im Folgenden finden Sie eine verbesserte Lösung für das neueste 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;
        }
1

Verwenden Sie den folgenden Code als NetworkChecker.Java & verwenden Sie ihn in Ihrem Code :

package das.soumyadip.util;

import Android.net.ConnectivityManager;
import Android.util.Log;

public class NetworkChecker {
    private final static String TAG = "NwtworkChecker";

    public static boolean isNetworkConnected(
            final ConnectivityManager connectivityManager) {
        boolean val = false;

        Log.d(TAG, "Checking for Mobile Internet Network");
        final Android.net.NetworkInfo mobile = connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobile.isAvailable() && mobile.isConnected()) {
            Log.i(TAG, "Found Mobile Internet Network");
            val = true;
        } else {
            Log.e(TAG, "Mobile Internet Network not Found");
        }

        Log.d(TAG, "Checking for WI-FI Network");
        final Android.net.NetworkInfo wifi = connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifi.isAvailable() && wifi.isConnected()) {
            Log.i(TAG, "Found WI-FI Network");
            val = true;
        } else {
            Log.e(TAG, "WI-FI Network not Found");
        }

        return val;
    }
}
1
Soumyadip Das

Wir können ConnectivityManager-Klasse für alle Informationen verwenden, die sich auf das Netzwerk beziehen. 

Außerdem werden Anwendungen benachrichtigt, wenn sich die Netzwerk- Konnektivität ändert . Rufen Sie eine Instanz dieser Klasse ab, indem Sie aufrufen

Die Hauptaufgaben dieser Klasse sind:  

  1. Überwachen Sie Netzwerkverbindungen (Wi-Fi, GPRS, UMTS usw.)
  2. Senden Sie Broadcast-Absichten, wenn sich die Netzwerkverbindung ändert
  3. Versuchen Sie, ein "Failover" zu einem anderen Netzwerk durchzuführen, wenn die Verbindung zu einem Netzwerk Unterbrochen wird
  4. Stellen Sie eine API bereit, mit der Anwendungen den grobkörnigen oder feinkörnigen - Status der verfügbaren Netzwerke abfragen können
  5. Stellen Sie eine API bereit, mit der Anwendungen Netzwerke für ihren Datenverkehr Anfragen und auswählen können

GetNetworkInfo-Funktion gibt Statusinformationen zu einem bestimmten Netzwerktyp zurück.

Diese Methode erfordert, dass der Aufrufer die Berechtigung besitzt

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

     /**
     * Checks the type of data connection that is currently available on the device.
     *
     * @return <code>ConnectivityManager.TYPE_*</code> as a type of internet connection on the
     *This method does not support multiple connected networks
     *             of the same type.
     * device. Returns -1 in case of error or none of
     * <code>ConnectivityManager.TYPE_*</code> is found.
     **/

-

public static int getDataConnectionType(Context ctx) {

        ConnectivityManager connectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);

        if (connectivityManager != null && connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null) {
            if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()) {
                return ConnectivityManager.TYPE_MOBILE;
            } else if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
                return ConnectivityManager.TYPE_WIFI;
            } else
                return -1;
        } else
            return -1;
    }
1
A-Droid Tech
        // TODO Auto-generated method stub
        ConnectivityManager connMgr =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        final Android.net.NetworkInfo mobile = connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobile.isAvailable() && mobile.isConnected()) {
            Log.i(TAG, "Found Mobile Internet Network");
            val = true;
        }
        // Checks the user prefs and the network connection. Based on the result, decides
        // whether
        // to refresh the display or keep the current display.
        // If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
        if (WIFI.equals(sPref) && networkInfo != null
                && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            // If device has its Wi-Fi connection, sets refreshDisplay
            // to true. This causes the display to be refreshed when the user
            // returns to the app.
            refreshDisplay = true;
            Toast.makeText(context, R.string.wifi_connected, Toast.LENGTH_SHORT).show();

            // If the setting is ANY network and there is a network connection
            // (which by process of elimination would be mobile), sets refreshDisplay to true.
        }

}
        else if (ANY.equals(sPref) && networkInfo != null) {
            refreshDisplay = true;

            // Otherwise, the app can't download content--either because there is no network
            // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
            // is no Wi-Fi connection.
            // Sets refreshDisplay to false.
        } else {
            refreshDisplay = false;
            Toast.makeText(context, R.string.lost_connection, Toast.LENGTH_SHORT).show();
        }
1
Maidul

in keinem der obigen Codes wird angezeigt, ob getNetworkInfo () null zurückgegeben hat. Dies geschieht entsprechend den Dokumenten, wenn der angeforderte Netzwerktyp nicht unterstützt wird. Dies deutet darauf hin, dass die App auf Geräten ohne 3G mit einer Nullzeigerausnahme abstürzt. 

0
Macs