¿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.
- Conociendo mediante programación el nombre de la aplicación mediante WiFi
- Configuración wifi ssid con un espacio en él
- Cómo evitar el retraso en los mensajes de GCM de Android / cambio de latidos del corazón
- Android 6.0.1 forzar la conexión wifi sin acceso a Internet
- Enlace de Android a la configuración inalámbrica y de red
<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.
- Wifi Connect-Desconectar de escucha
- Cómo recordar la configuración wifi y la red conectada a través de los reinicios
- Android 4.0 - comprobar la conexión a WiFi
- ¿Cómo conectar automáticamente un WiFi con SSID especificado?
- ¿Puedo emular una conexión wi-fi para probar Wi-fi Direct?
- ¿Cómo detectar si una red está configurada como un hotspot móvil en Android?
- ¿Por qué mi acceso desde mi móvil a mi red informática no funciona?
- ¿Cómo identificar un dispositivo Android mediante programación?
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.
- ¿Cómo acceder a Android a una base de datos sqlite incluida en la carpeta de activos?
- HTML.fromHtml agrega espacio al final del texto?