1、动态注册监听网络变化
下面这个例子是通过动态注册网络状态监听器,来实现当网络转台变化时,显示吐司提醒用户。代码也比较简单:
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 动态注册广播
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
unregisterReceiver(networkChangeReceiver);
super.onDestroy();
}
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "网络状态变化", Toast.LENGTH_LONG).show();
}
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
下面是当手机取消飞行模式的时候的效果:
改进:输出网络可不可用
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectionManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
Toast.makeText(context, "当前网络可用", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(context, "当前网络不可用", Toast.LENGTH_LONG).show();
}
}
}
还有一个例子是关于静态注册的,可以接收到开机完成的信息,由于比较简单就不展示了。