Issue
In Android N, it is mentioned on the official website that “Apps targeting Android N do not receive CONNECTIVITY_ACTION broadcasts”. And it is also mentioned that JobScheduler
can be used as an alternative. But the JobScheduler
doesn’t provide exactly the same behavior as CONNECTIVITY_ACTION
broadcast.
In my Android application, I was using this broadcast to know the network state of the device. I wanted to know if this state was CONNECTING
or CONNECTED
with the help of CONNECTIVITY_ACTION
broadcast and it was best suited for my requirement.
Now that it is deprecated, can any one suggest me the alternative approach to get current network state?
Solution
What will be deprecated is the ability for a backgrounded application to receive network connection state changes.
As David Wasser said you can still get notified of connectivity changes if the app component is instantiated (not destroyed) and you have registered your receiver programmatically with its context, instead of doing it in the manifest.
Or you can use NetworkCallback instead. In particular, you will need to override onAvailable for connected state changes.
Let me draft a snippet quickly:
public class ConnectionStateMonitor extends NetworkCallback {
final NetworkRequest networkRequest;
public ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public void enable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
}
// Likewise, you can have a disable method that simply calls ConnectivityManager.unregisterNetworkCallback(NetworkCallback) too.
@Override
public void onAvailable(Network network) {
// Do what you need to do here
}
}
Answered By – Amokrane Chentir
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0