¿No puede escuchar el estado del administrador de wi-fi de android?

Estoy teniendo algunos problemas con el receptor BroadCast para comprobar el estado de Wi-Fi. ¿Podrias ayudarme por favor?

Este es mi archivo de manifiesto.

<uses-permission android:name="android.permission.READ_PHONE_STATE"> </uses-permission> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"> </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> </uses-permission> <uses-permission android:name="android.permission.INTERNET"> </uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MainActivity"> <intent-filter android:name="android.net.wifi.WIFI_STATE_CHANGED"/> </receiver> </application> </manifest> 

Y esta es la MainActivity.java

 public class MainActivity extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1); String msg = null; switch (state) { case WifiManager.WIFI_STATE_DISABLED: msg = "it is disabled"; break; case WifiManager.WIFI_STATE_ENABLED: msg = "it is enabled"; break; case WifiManager.WIFI_STATE_DISABLING: msg = "it is switching off"; break; case WifiManager.WIFI_STATE_ENABLING: msg = "wifi is getting enabled"; break; default: msg = "not working properly"; break; } if (msg != null) { Log.d("************%%%%%%%%wifi state ", "WIFI" + msg); Toast.makeText(context, "Wifi state is" + msg, Toast.LENGTH_LONG) .show(); } } } 

No estoy seguro de dónde estoy cometiendo mi error. Cualquier entrada sería apreciada.
No recibo ningún error simplemente porque el archivo de registro no muestre el mensaje requerido.

Usted no ha agregado los parámetros para el filtro de intención, el manifiesto final debe ser similar a esto

 <uses-permission android:name="android.permission.READ_PHONE_STATE"> </uses-permission> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"> </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> </uses-permission> <uses-permission android:name="android.permission.INTERNET"> </uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> </intent-filter> </receiver> </application> 

Espero que esto ayude.

Si no agregó los siguientes permisos, vuelva a intentarlo después de agregarlos.

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

En primer lugar, debe asegurarse de solicitar el permiso para obtener acceso para ver el estado WIFI. Sólo haz lo que dijo Anup Rojekar.

En segundo lugar, creo que comete errores al usar un BroadcastReceiver. En su manifest.xml, usted declara MainActivity.

 <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

Por lo que el MainActivy es una actividad. Además, declara MainActivity como un receptor de difusión. Esto es ilegal. Debe utilizar una emisión independiente para hacerlo. Me gusta esto:

  <receiver android:name=".WifiBroadcastReceiver"> <intent-filter> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> </intent-filter> </receiver> 

Observe por favor que cambié el nombre para el broadcastReceiver y dentro del nodo, usted debe agregar un nodo del <action> como arriba.

En tercer lugar, crear un WifiBroadcastReceiver.java y copiar los códigos de su mainActivity.java original a él. Recuerde cambiar la declaración de clase a public class WifiBroadcastReceiver extends BroadcastReceiver

Espero poder ayudar. Por favor, dime si funciona. No tengo un PC a mano; Así que tampoco pruebo los códigos.

Además, necesita un nuevo archivo MainActivity.java. Podría generarse automáticamente en Eclipse. Esta clase debe declararse como: public class MainActivity extends Activity .

Agregue este permiso también para verificar el estado de la red de su dispositivo.

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

Una combinación de varias respuestas anteriores, estos fragmentos funcionaron para mí para comprobar si estoy conectado a una red WIFI (esto no me dice si estoy conectado a Internet):

Crear una clase WifiMonitor.java

 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager; import android.util.Log; public class WifiMonitor extends BroadcastReceiver { private String TAG = "TGtracker"; @Override public void onReceive(Context context, Intent intent) { Log.e(TAG,"entered wifimonitor"); // Process the Intent here WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (wifi.isWifiEnabled()==true) { Log.d(TAG, "You are connected to WIFI "+wifi.getConnectionInfo()); } else { Log.e(TAG,"You are NOT connected to WIFI"); } } } 

Ahora vaya a su archivo de manifiesto e incluya

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

Y finalmente, coloque el receptor justo antes de la etiqueta </ ​​application> (aún en el archivo de manifiesto)

 <application... <receiver android:name=".WifiMonitor" android:enabled="true"> <intent-filter> <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" /> <action android:name="android.net.wifi.STATE_CHANGE" /> <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" /> </intent-filter> </receiver> </application> 

Al aplicar su código, NO COPIE las etiquetas <application … o </ application> en el código anterior (solo las pongo allí para que sepa dónde colocar el receptor).

NOTA: por favor corrija su MainActivity para extender la Actividad y no BroadcastReceiver.

Para mí los cambios en el AndroidManifiest.xml no funcionaron. Tengo el mismo problema, la aplicación se detuvo de repente.

He utilizado el registerReceiver en la actividad principal y funciona 🙂 Para mí el WifiStateTester es la clase que se extiende desde BroadcastReceiver.

  WifiStateTester wfs= new WifiStateTester(); IntentFilter iFilter= new IntentFilter(); iFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); iFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); this.registerReceiver(wfs, iFilter); 

Otra cosa diferente que hice, es que en el método onReceiver comprobé directamente el estado wifi.

  • Conexión wifi cambio de acción en android
  • ¿Puedo usar WiFi para transferir datos / mensajes entre dos teléfonos Android, no conectados a un enrutador?
  • Obtener dispositivos no conectados, cuando mi dispositivo está en modo de conexión
  • Conectarse al punto de acceso específico android
  • ¿Es posible escribir un wifi cracking util para teléfonos Android? Modo de monitor vs Multicast?
  • Cómo imprimir datos desde la aplicación de Android a la impresora WIFI?
  • Emulador de Android - Error de Wifi
  • Cómo crear y leer configuraciones WEP / EAP WiFi de forma programática en Android?
  • ¿Cómo abrir el cuadro de diálogo del sistema para introducir la contraseña de una red wifi segura en android?
  • Compilar y construir "iw" para Android 4.1 dispositivo?
  • ¿Cómo instalar mediante programación un certificado de CA (para configuración EAP WiFi) en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.