主要思路:使用Android中的四大组件之:BrocastReceiver监听网络状态的变化。接收到网络状态改变的广播之后判断当前的网络是否可用。
创建广播接收器MyNetworkReceiver
public class MyNetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//**判断当前的网络连接状态是否可用*/
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if ( info != null && info.isAvailable()){
//当前网络状态可用
int netType = info.getType();
if (netType == ConnectivityManager.TYPE_WIFI){
Log.e("NETSTATUE", "当前网络状态为-wifi");
}else if (netType == ConnectivityManager.TYPE_MOBILE ){
Log.e("NETSTATUE", "当前网络状态为-mobile");
}
}else {
//当前网络不可用
Log.e("NETSTATUE", "无网络连接");
}
}
}
一、BroadcastReceiver的用法之静态注册:
在AndroidManifest清单文件中注册广播接收器
<receiver
android:name=".MyNetworkReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
二、BroadcastReceiver的用法之动态注册
可以在Activity的OnCreate()方法中注册onDestory()方法中注销
亦可以再Application的onCreate()方法中注册onTerminate()方法中注销
注册:
receiver = new YunNetworkReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(receiver,intentFilter);
注销:
unregisterReceiver(receiver);