MyReceiver.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" />
ОБНОВЛЕНИЕ
Если ваше приложение нацелено на уровень API 26 или выше, вы не можете использовать манифест для объявления получателя для неявных широковещательных передач (вещательных передач, которые не нацелены конкретно на ваше приложение), за исключением нескольких неявных широковещательных передач, на которые не распространяется это ограничение. В большинстве случаев вместо этого можно использовать запланированные задания.
использование 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)
}
ОБНОВЛЕНИЕ 2
CONNECTIVITY_ACTION
Эта константа устарела на уровне API 28. Вместо этого приложения должны использовать более универсальные функции requestNetwork(NetworkRequest, PendingIntent)
, registerNetworkCallback(NetworkRequest, PendingIntent)
или registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback)
для более быстрого и подробного обновления сетевых изменений, которые им важны.
потому что это added in API level 22
, поэтому приведенный выше код будет нормально работать на всех версиях Android.
person
vuhung3990
schedule
19.05.2014