Domanda

Sono nuovo di sviluppo di Android e lavorare su un'applicazione Android che richiede il telefono deve essere collegato a Internet, sia attraverso Wi-Fi, EDGE o 3G.

Questo è il codice che sto usando per verificare se una connessione ad internet è disponibile

public static boolean isConnected()
{
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

Ho anche impostato queste autorizzazioni nel file manifesto

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

Questo funziona bene nell'emulatore in esecuzione la versione 1.5 di Android, quando 3G è attivata, ma si blocca quando ho disattivare la connessione 3G. La mia applicazione genera un'eccezione puntatore nullo quando chiamo isConnectedOrConnecting (). La stessa cosa accade anche sul mio HTC Desire con sistema operativo Android 2.1.

La speranza che qualcuno conosce la soluzione a questo.

Grazie in anticipo!

È stato utile?

Soluzione

Se l'incidente è direttamente sulla linea:

return cm.getActiveNetworkInfo().isConnectedOrConnecting();

allora che i mezzi getActiveNetworkInfo() restituiti null, perché non esiste una rete attiva -. In tal caso, il metodo deve restituire isConnected() false

Altri suggerimenti

Ho scritto questo metodo per gestire questo:

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

Un modo per farlo credo ...

Per controllare internet c'è o non può essere verificata solo sul dispositivo ...... Su emulatore potrebbe non funzionare .... Io ho il seguente codice e il suo 100% di lavoro sul dispositivo Android .... .:)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tv = (TextView)findViewById(R.id.txt);
    b = checkInternetConnection();


    if(b!=true)
    {
        tv.setText("net is not dr.......");
    }
    else
    {
        tv.setText("net is dr.......");
    }

}
//Check weather Internet connection is available or not
public boolean checkInternetConnection() {
           final ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
           if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() &&    conMgr.getActiveNetworkInfo().isConnected()) {
                 return true;
           } else {
                 System.out.println("Internet Connection Not Present");
               return false;
           }
        }

}

Hai usato questo snippet.

ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null)
      {
          NetworkInfo[] info = connectivity.getAllNetworkInfo();
          if (info != null)
              for (int i = 0; i < info.length; i++)
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }

      }

utilizzare questo per detemine se connceted Wifi / 3G:

is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
    isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
    network = is3g||isWifi;

e questo per abilitare wifi te stesso:

WifiManager wifiManager = (WifiManager) MainWindowYuval.this.getSystemService(Context.WIFI_SERVICE);
                    wifiManager.setWifiEnabled(true);      
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top