MonReceiver.java
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if(isConnected(context)) Toast.makeText(context, "Connected.", Toast.LENGTH_LONG).show();
else Toast.makeText(context, "Lost connect.", Toast.LENGTH_LONG).show();
}
public boolean isConnected(Context context) {
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnected();
return isConnected;
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
UPDATE
Si votre application vise le niveau 26 de l'API ou plus, vous ne pouvez pas utiliser l'option manifeste pour déclarer un récepteur pour les diffusions implicites (diffusions qui ne ciblent pas spécifiquement votre application), à l'exception de quelques diffusions implicites de type qui sont exemptées de cette restriction. Dans la plupart des cas, vous pouvez utiliser des tâches planifiées à la place.
utilisation connection = MyReceiver()
// onCreate - onDestroy, onResume - onPause depends on you
override fun onStart() {
super.onStart()
registerReceiver(connection, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
}
override fun onStop() {
super.onStop()
// remember unregister to avoid leak
unregisterReceiver(connection)
}
MISE À JOUR 2
CONNECTIVITY_ACTION
Cette constante a été supprimée au niveau 28 de l'API. Les applications doivent utiliser la constante plus polyvalente requestNetwork(NetworkRequest, PendingIntent)
, registerNetworkCallback(NetworkRequest, PendingIntent)
ou registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback)
pour obtenir des mises à jour plus rapides et plus détaillées sur les modifications du réseau qui les intéressent.
parce qu'il added in API level 22
Ainsi, le code ci-dessus fonctionnera correctement sur toutes les versions d'Android.