2011-12-30 18 views
16

Tengo un pequeño programa que intenta conectarse a una red wifi. Activa el wifi en el dispositivo, entonces, si es la primera vez que se conecta a una red determinada. Carga el wifi del dispositivo para seleccionar y agregar la contraseña para la conexión. Hasta que agregue la contraseña para conectar el programa, no debería estar terminado. ¿Cómo puedo agregar algo para esperar hasta que llegue desde el administrador de wifi que está conectado? Intento dormir pero ¿se congela la aplicación y no obtengo el menú emergente de wifi para conectarme? ¿Hay alguna otra manera?espere hasta que wifi se conecte a android

Respuesta

24

He encontrado la solución para su problema hace un mes, simplemente use el método de inserción de subprocesos isConnected() en él.
En este caso, uso WifiExplorerActivity para mostrar toda la red wifi y permitir que el usuario se conecte a ella.

 Thread t = new Thread() { 
     @Override 
     public void run() { 
      try { 
        //check if connected! 
       while (!isConnected(WifiExplorerActivity.this)) { 
        //Wait to connect 
        Thread.sleep(1000);      
       } 

       Intent i = new Intent(WifiExplorerActivity.this, MainActivity.class); 
       startActivity(i); 

      } catch (Exception e) { 
      } 
     } 
    }; 
    t.start(); 

Y esta es la función para comprobar WiFi ha conectado o no:

public static boolean isConnected(Context context) { 
    ConnectivityManager connectivityManager = (ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = null; 
    if (connectivityManager != null) { 
     networkInfo = connectivityManager.getActiveNetworkInfo(); 
    } 

    return networkInfo != null && networkInfo.getState() == NetworkInfo.State.CONNECTED; 
} 

Por último, asegúrese de que su AndroidManifest.xml aspecto:

<activity android:name=".WifiExplorerActivity" >   
    <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
</activity> 

Además, se puede utilizar ProgressDialog para esperar conectar. Ver http://developer.android.com/guide/topics/ui/dialogs.html

+0

muchas gracias. Lo uso y funciona muy bien – prokopis

+1

¿Por qué necesita el '' en el manifiesto? (Nunca lo he usado, y no entiendo lo que hace) – MiniGod

+1

Uso android.net.conn.CONNECTIVITY_CHANGE para registrar Receiver para esta actividad, vea http://stackoverflow.com/questions/8127324/connectivitymanager-android -net-cone-connectivity-change – R4j

Cuestiones relacionadas