I need to detect when I have network connectivity over WIFI. What broadcast is sent to establish that a valid network connection has been made. I need to validate that a valid network connection for HTTP exists. What should I listen for and what additional tests do I need to make to know that a valid connection exists.
-
Parts of this question have been answered here I found: http://stackoverflow.com/questions/4238921/android-detect-whether-there-is-an-internet-connection-available – Androider May 04 '11 at 19:11
-
1But there is still the question of WHEN to check these conditions? – Androider May 04 '11 at 19:11
-
1I would like feedback on if there are broadcasts that will occur that could be caught by a broadcast receiver? – Androider May 04 '11 at 19:13
-
1How can I do this on Android O as implicit broadcast receivers like android.net.wifi.STATE_CHANGE will no longer be allowed to be registered in the manifest (see https://developer.android.com/guide/components/broadcast-exceptions.html). If we register it in the application activity (say onCreate), then it will have to be deregistered in onStop(), and we will no longer receive wifi related events – zafar142003 Mar 03 '18 at 12:48
15 Answers
You can register a BroadcastReceiver
to be notified when a WiFi connection is established (or if the connection changed).
Register the BroadcastReceiver
:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
And then in your BroadcastReceiver
do something like this:
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)) {
//do stuff
} else {
// wifi connection was lost
}
}
}
For more info, see the documentation for BroadcastReceiver
and WifiManager
Of course you should check whether the device is already connected to WiFi before this.
EDIT: Thanks to ban-geoengineering, here's a method to check whether the device is already connected:
private boolean isConnectedViaWifi() {
ConnectivityManager connectivityManager = (ConnectivityManager) appObj.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifi.isConnected();
}
-
1Why SUPPLICANT_CONECTION_CHANGE_ACTION? I thought it was JUST CONNECTION_CHANGE change broadcast. Why SUPPLCANT??? thanks – Androider May 05 '11 at 04:54
-
2huh? I don't see an action called connection_change...? I only see wifi state changed but that action only indicates whether wifi is enabled or not (or en-/disabling) not whether it's connected... is supplicant_connection_change_action not doing what you need? – jpm May 05 '11 at 18:48
-
9For me WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION does not work in case when connection to a known wifi station was established / lost. But WifiManager.NETWORK_STATE_CHANGED_ACTION does work. – Yar Aug 22 '13 at 12:53
-
1"android.net.wifi.STATE_CHANGE" worked for me. check my answer below – M. Usman Khan Mar 25 '14 at 06:16
-
1"Of course you should check whether the device is already connected to WiFi before this." - so, to get the initial Wi-Fi state, you can use this method... `private boolean isConnectedViaWifi() { ConnectivityManager connectivityManager = (ConnectivityManager) appObj.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return mWifi.isConnected(); }` – ban-geoengineering Jun 06 '14 at 10:24
-
-
@jpm Is isConnectedViaWifi guaranteed to work even though "getNetworkInfo" is deprecated? – CamHart Aug 15 '16 at 19:26
-
@CamHart I'm not really sure about the latest updates on this topic, but I think you should check out https://developer.android.com/reference/android/net/ConnectivityManager.html#getActiveNetworkInfo() and getAllNetworks() But I haven't worked with these so far...If I've time later I'll check myself and update my answer – jpm Aug 17 '16 at 09:23
-
How can I do this on Android O as implicit broadcast receivers like android.net.wifi.STATE_CHANGE will no longer be allowed to be registered in the manifest (see https://developer.android.com/guide/components/broadcast-exceptions.html). If we register it in the application activity (say onCreate), then it will have to be deregistered in onStop(), and we will no longer receive wifi related events – zafar142003 Mar 03 '18 at 12:47
-
@zafar142003 then why not to use a `STICKY` service, and make the context alive.... I tried it, it works. | call `registerReceiver();` – exploitr May 30 '18 at 18:36
-
Is there a way to detect to which Wifi network the device got connected (the SSID or MAC, perhaps) ? – android developer Oct 26 '18 at 13:01
-
`SUPPLICANT_CONNECTION_CHANGE_ACTION` is **deprecated since api level 28**. Use `NETWORK_STATE_CHANGE_ACTION` instead. – Peter Lehnhardt Jun 11 '19 at 13:16
The best that worked for me:
AndroidManifest
<receiver android:name="com.AEDesign.communication.WifiReceiver" >
<intent-filter android:priority="100">
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
BroadcastReceiver class
public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(info != null && info.isConnected()) {
// Do your work.
// e.g. To check the Network Name or other info:
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
}
}
}
Permissions
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

- 8,611
- 6
- 47
- 72

- 3,689
- 1
- 59
- 69
-
1I think this is the best answer for specifically wifi state chage. Thanks – Mikel Apr 27 '14 at 10:41
-
4For future easy reference, that hardcoded action is [WifiManager.NETWORK_STATE_CHANGED_ACTION](http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION). – Anonsage Nov 14 '14 at 18:37
-
3
-
1do we need to write any code to send broadcast in main activity?? – Nisari Balakrishnan Dec 06 '16 at 10:59
-
-
2How can I do this on Android O as implicit broadcast receivers like android.net.wifi.STATE_CHANGE will no longer be allowed to be registered in the manifest (see https://developer.android.com/guide/components/broadcast-exceptions.html). If we register it in the application activity (say onCreate), then it will have to be deregistered in onStop(), and we will no longer receive wifi related events. – zafar142003 Mar 03 '18 at 12:43
-
1great discussion but in my case, I want to get broadcast right after user enables wifi button from settings. android.net.wifi.STATE_CHANGE is called when wifi is connected to a device and its late for me. – Mateen Chaudhry Aug 06 '18 at 03:03
For me only WifiManager.NETWORK_STATE_CHANGED_ACTION
works.
Register a broadcast receiver:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
and receive:
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
boolean connected = info.isConnected();
//call your method
}
}

- 35,493
- 19
- 190
- 259

- 4,543
- 2
- 35
- 42
-
1For me as well only WifiManager.NETWORK_STATE_CHANGED_ACTION worked, any explanations for the reason why only this will work? – benchuk Jun 04 '15 at 05:31
You can start a wifi connection if you give the user a choice to override the normal behavior of asking each time.
I choose to use three methods...
public boolean isOnline()
{
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
This is quick check if there is an internet connect either Wifi or CellData. From here you can choose what action you want to take. Is it in Airplane mode needs to be checked also.
On a separate thread. I set a variable IpAddress to = " " And poll until I have a valid an ip address.
WifiManager wifi;
wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifi.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = null;
ip = String.format("%d.%d.%d.%d",
(ipAddress & 0xff),
(ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff),
(ipAddress >> 24 & 0xff));
Log.e(" >>IP number Begin ",ip);
Another code snippet... If its not on turn it on (with users prior permission)
if(wifi.isWifiEnabled()!=true)wifi.setWifiEnabled(true);

- 442
- 6
- 18
Answer given by user @JPM and @usman are really very useful. It works fine but in my case it come in onReceive
multiple time in my case 4 times so my code execute multiple time.
I do some modification and make as per my requirement and now it comes only 1 time
Here is java class for Broadcast.
public class WifiReceiver extends BroadcastReceiver {
String TAG = getClass().getSimpleName();
private Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
networkInfo.isConnected()) {
// Wifi is connected
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
Log.e(TAG, " -- Wifi connected --- " + " SSID " + ssid );
}
}
else if (intent.getAction().equalsIgnoreCase(WifiManager.WIFI_STATE_CHANGED_ACTION))
{
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
if (wifiState == WifiManager.WIFI_STATE_DISABLED)
{
Log.e(TAG, " ----- Wifi Disconnected ----- ");
}
}
}
}
In AndroidManifest
<receiver android:name=".util.WifiReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

- 3,238
- 17
- 27

- 2,074
- 3
- 28
- 47
-
1
-
1
-
1
-
This answer will not work as of api v26. Official docs says: This broadcast is not delivered to manifest receivers in applications that target API version 26 or later. – Amir Hossein Apr 13 '22 at 06:16
To detect WIFI connection state, I have used CONNECTIVITY_ACTION from ConnectivityManager class so:
IntentFilter filter=new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
and from your BroadCastReceiver:
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
int networkType = intent.getIntExtra(
android.net.ConnectivityManager.EXTRA_NETWORK_TYPE, -1);
if (ConnectivityManager.TYPE_WIFI == networkType) {
NetworkInfo networkInfo = (NetworkInfo) intent
.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo != null) {
if (networkInfo.isConnected()) {
// TODO: wifi is connected
} else {
// TODO: wifi is not connected
}
}
}
}
ps:works fine for me:)

- 8,914
- 14
- 83
- 118

- 131
- 1
- 2
-
1fyi, with Android 6 when you have a valid cell data connection, changes in wifi state won't trigger CONNECTIVITY_ACTION. The only reason they did is connectivity state was impacted, now it isn't. – Bruce Nov 24 '15 at 00:33
-
CONNECTIVITY_ACTION: "This constant was deprecated in API level 28. apps should use the more versatile requestNetwork(NetworkRequest, PendingIntent), registerNetworkCallback(NetworkRequest, PendingIntent) or registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) functions instead for faster and more detailed updates about the network changes they care about." – cesargastonec Nov 23 '20 at 22:13
This code does not require permission at all. It is restricted only to Wi-Fi network connectivity state changes (any other network is not taken into account). The receiver is statically published in the AndroidManifest.xml file and does not need to be exported as it will be invoked by the system protected broadcast
, NETWORK_STATE_CHANGED_ACTION
, at every network connectivity state change.
AndroidManifest:
<receiver
android:name=".WifiReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<!--protected-broadcast: Special broadcast that only the system can send-->
<!--Corresponds to: android.net.wifi.WifiManager.NETWORK_STATE_CHANGED_ACTION-->
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
BroadcastReceiver class:
public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
/*
Tested (I didn't test with the WPS "Wi-Fi Protected Setup" standard):
In API15 (ICE_CREAM_SANDWICH) this method is called when the new Wi-Fi network state is:
DISCONNECTED, OBTAINING_IPADDR, CONNECTED or SCANNING
In API19 (KITKAT) this method is called when the new Wi-Fi network state is:
DISCONNECTED (twice), OBTAINING_IPADDR, VERIFYING_POOR_LINK, CAPTIVE_PORTAL_CHECK
or CONNECTED
(Those states can be obtained as NetworkInfo.DetailedState objects by calling
the NetworkInfo object method: "networkInfo.getDetailedState()")
*/
/*
* NetworkInfo object associated with the Wi-Fi network.
* It won't be null when "android.net.wifi.STATE_CHANGE" action intent arrives.
*/
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo != null && networkInfo.isConnected()) {
// TODO: Place the work here, like retrieving the access point's SSID
/*
* WifiInfo object giving information about the access point we are connected to.
* It shouldn't be null when the new Wi-Fi network state is CONNECTED, but it got
* null sometimes when connecting to a "virtualized Wi-Fi router" in API15.
*/
WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
String ssid = wifiInfo.getSSID();
}
}
}
Permissions:
None

- 51
- 1
- 5
-
2The works in devices running < API 26. As @Isham suggested the action is no longer supported in Android O – tiagocarvalho92 May 14 '18 at 21:50
Android O removed the possibility to receive the implicit broadcasts for a wifi state change. So if your app is closed, you'll not be able to receive them. The new WorkManager
has the ability to run when your app is closed, so I've experimented a bit with it and it seems to work quite well:
Add this to your dependencies:
implementation "android.arch.work:work-runtime:1.0.0-alpha08"
WifiConnectWorker.kt
class WifiConnectWorker : Worker() {
override fun doWork(): Result {
Log.i(TAG, "I think we connected to a wifi")
return Result.SUCCESS
}
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
val workManager = WorkManager.getInstance()
// Add constraint to start the worker when connecting to WiFi
val request = OneTimeWorkRequest.Builder(WifiConnectWorker::class.java)
.setConstraints(Constraints.Builder()
.setRequiredNetworkType(UNMETERED)
.build())
.build()
// The worker should be started, even if your app is closed
workManager.beginUniqueWork("watch_wifi", REPLACE, request).enqueue()
}
}
Keep in mind that this was just a quick test for a one-time notification. There is more work to do to always get notified when WiFi is turned on and off.
PS: When the app is force quit, the worker is not started, it seems WorkManager
is canceling the requests then.

- 4,611
- 2
- 34
- 54
-
Is there any way to start worker even if my app is force quited state. Work manager is working with .setRequiredNetworkType(UNMETERED) only if the app is open. Is there any way to trigger worker even app is in killed(force closed state). Because implicit broad cast receiver also somewhat restricted. What will be the best alternative? – Suresh Sep 21 '18 at 17:03
November 2020:
I have dealt too much with items deprecated by Google. Finally I found a solution to my particular requirement using "registerNetworkCallback" as Google currently suggests.
What I needed was a simple way to detect that my device has an IPv4 assigned in WIFI. (I haven't tried other cases, my requirement was very specific, but maybe this method, without deprecated elements, will serve as a basis for other cases).
Tested on APIs 23, 24 and 26 (physical devices) and APIs 28 and 29 (emulated devices).
ConnectivityManager cm
= (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
cm.registerNetworkCallback
(
builder.build(),
new ConnectivityManager.NetworkCallback()
{
@Override
public void onAvailable(Network network)
{
//Actions to take with Wifi available.
}
@Override
public void onLost(Network network)
{
//Actions to take with lost Wifi.
}
}
);
(Implemented inside "MainActivity.Oncreate")
Note: In manifest needs "android.permission.ACCESS_NETWORK_STATE"

- 430
- 7
- 15
-
I've been using the deprecated version and have noticed a deficiency - I can detect if the wifi is truly out, but not if the wifi is working properly and the router it is attached to is not. Does the new call back indicate whether or not you can actually communicate the internet? Or like before only see the SSID – Martin Feb 16 '21 at 18:10
-
@Martin I'm sorry. I use this method only to detect if the device has an assigned IPv4 (calling another function from "onAvailable"). I don't check if there is internet or not. Internet is not a requirement specifically in my project. I'm sure there must be other appropriate methods to verify internet access that can probably be invoked from "onAvailable" as well. – cesargastonec Feb 18 '21 at 09:55
-
Both `onLost()` and `onUnavailable()` doesn't get called when first time launches the app with no internet connection. Any suggestion? – Sam Chen Mar 10 '21 at 17:23
-
@SamChen You're right. The "onAvailable ()" and "onLost ()" functions are not called if the app starts with Wifi not established. But "onAvailable ()" is actually called if the application starts with an established Wifi connection. So, I initialize my app in a "Wifi not established" state. If in fact there is no Wifi, my application will remain in the "Wifi not established" state. But if when starting my application it finds that there is an established Wifi connection, the "onAvailable" function will be called and it will change my application to the "Wifi established" state. – cesargastonec Mar 14 '21 at 23:14
-
@cesargastonec Wow, you're genius! Using a `Boolean` to indicate the connection state and initialize to false, good idea. – Sam Chen Mar 15 '21 at 01:23
-
@cesargastonec Sadly this doesn't work for me, but I found my solution: https://stackoverflow.com/questions/66573565/android-get-status-of-wifi-connection/66648761 – Sam Chen Mar 16 '21 at 03:49
Here is an example of my code, that takes into account the users preference of only allowing comms when connected to Wifi.
I am calling this code from inside an IntentService
before I attempt to download stuff.
Note that NetworkInfo
will be null
if there is no network connection of any kind.
private boolean canConnect()
{
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean canConnect = false;
boolean wifiOnly = SharedPreferencesUtils.wifiOnly();
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo != null)
{
if(networkInfo.isConnected())
{
if((networkInfo.getType() == ConnectivityManager.TYPE_WIFI) ||
(networkInfo.getType() != ConnectivityManager.TYPE_WIFI && !wifiOnly))
{
canConnect = true;
}
}
}
return canConnect;
}

- 1,358
- 2
- 12
- 26
I have two methods to detect WIFI connection receiving the application context:
1)my old method
public boolean isConnectedWifi1(Context context) {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
NetworkInfo[] netInfo = connectivityManager.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if ((ni.getTypeName().equalsIgnoreCase("WIFI"))
&& ni.isConnected()) {
return true;
}
}
}
return false;
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return false;
}
2)my New method (I´m currently using this method):
public boolean isConnectedWifi(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return networkInfo.isConnected();
}
-
How can I do this on Android O as implicit broadcast receivers like android.net.wifi.STATE_CHANGE will no longer be allowed to be registered in the manifest (see https://developer.android.com/guide/components/broadcast-exceptions.html). If we register it in the application activity (say onCreate), then it will have to be deregistered in onStop(), and we will no longer receive wifi related events – zafar142003 Mar 03 '18 at 12:46
1) I tried Broadcast Receiver approach as well even though I know CONNECTIVITY_ACTION/CONNECTIVITY_CHANGE is deprecated in API 28 and not recommended. Also bound to using explicit register, it listens as long as app is running.
2) I also tried Firebase Dispatcher which works but not beyond app killed.
3) Recommended way found is WorkManager to guarantee execution beyond process killed and internally using registerNetworkRequest()
The biggest evidence in favor of #3 approach is referred by Android doc itself. Especially for apps in the background.
Also here
In Android 7.0 we're removing three commonly-used implicit broadcasts — CONNECTIVITY_ACTION, ACTION_NEW_PICTURE, and ACTION_NEW_VIDEO — since those can wake the background processes of multiple apps at once and strain memory and battery. If your app is receiving these, take advantage of the Android 7.0 to migrate to JobScheduler and related APIs instead.
So far it works fine for us using Periodic WorkManager request.
Update: I ended up writing 2 series medium post about it.

- 4,185
- 3
- 44
- 41
I used this code:
public class MainActivity extends Activity
{
.
.
.
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
.
.
.
}
@Override
protected void onResume()
{
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
}
@Override
protected void onPause()
{
super.onPause();
unregisterReceiver(broadcastReceiver);
}
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION))
{
if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false))
{
// wifi is enabled
}
else
{
// wifi is disabled
}
}
}
};
}

- 467
- 1
- 8
- 20
For all those who enjoying CONNECTIVITY_CHANGE broadcast, please note this is no more fired when app is in background in Android O.
https://developer.android.com/about/versions/o/background.html

- 424
- 4
- 14
You Can use Broadcast With Filter
<receiver
android:name=".receivers.ConnectionType"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
after that, you can listen to the value returned like that
@Override
public void onReceive(Context context, Intent intent) {
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
if(wifiState==WifiManager.WIFI_STATE_ENABLED){
Toast.makeText(context, "WIFI on", Toast.LENGTH_SHORT).show();
}else if(wifiState==WifiManager.WIFI_STATE_DISABLED) {
Toast.makeText(context, "WIFI OFF", Toast.LENGTH_SHORT).show();
}
}
it will fire every time WIFI enabled or disabled

- 114
- 1
- 1
- 8