//這是一個網絡監聽的工具類
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* User:Bick
* Created by Administrator-10-24 15 : 30
*/
public class NetworkConnectivityUtils {
public void GetNetWorkConnectivity(Context context, MyConnectivityReceiver receiver) {
//過濾器
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); //添加意圖Action網絡意圖
context.registerReceiver(receiver, filter);//這句話很重要 註冊 register廣播receiver
}
public static class MyConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connMag = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connMag.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connMag.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (!wifi.isConnected() && !mobile.isConnected()) {
//沒網絡 獲取數據庫
networkM.NoNetWork();
}else if(mobile.isConnected()){
networkM.mobileNetWork();
} else {
//有網絡 走請求
//請求數據
networkM.haveNetWork();
}
}
private NetworkM networkM;
public void setNetworkM(NetworkM networkM){
this.networkM=networkM;
}
public interface NetworkM{
void haveNetWork();
void NoNetWork();
void mobileNetWork();
}
}
}
// 在Activity中需要判斷的地方調用
//實例化工具類
NetworkConnectivityUtils utils=new NetworkConnectivityUtils();
//實例化網絡廣播監聽
NetworkConnectivityUtils.MyConnectivityReceiver receiver= new NetworkConnectivityUtils.MyConnectivityReceiver();
//調用初始化 註冊廣播的方法
utils.GetNetWorkConnectivity(this,receiver);
//廣播的回調方法
receiver.setNetworkM(new NetworkConnectivityUtils.MyConnectivityReceiver.NetworkM() {
@Override
public void haveNetWork() {
Toast.makeText(MainActivity.this,"網絡一切正常",Toast.LENGTH_SHORT).show();
}
@Override
public void NoNetWork() {
Toast.makeText(MainActivity.this, "網絡已經斷開,請檢查網絡", Toast.LENGTH_LONG).show();
}
@Override
public void mobileNetWork() {
Toast.makeText(MainActivity.this, "移動網已連接", Toast.LENGTH_LONG).show();
}
});
別忘了加聯網權限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>