1. 程式人生 > >android監聽網路狀態變化

android監聽網路狀態變化

許可權

uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”
uses-permission android:name=”android.permission.INTERNET”

網路狀態的Receive重點內容**

package com.bawei.com.duanwan.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.widget.Toast;
import com.bawei.com.duanwan.netstate.NetEvent;
import com.bawei.com.duanwan.network.NetUtils;

import de.greenrobot.event.EventBus;
/**
* @Description:網路狀態的Receive
* @author http://blog.csdn.net/finddreams
*/
public class NetReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
        boolean isConnected = NetUtils.isNetworkConnected(context);
        System.out.println("網路狀態:" + isConnected);
        System.out.println("wifi狀態:" + NetUtils.isWifiConnected(context));
        System.out.println("行動網路狀態:" + NetUtils.isMobileConnected(context));
        System.out.println("網路連線型別:" + NetUtils.getConnectedType(context));
        if (isConnected) {
            Toast.makeText(context, action+"已經連線網路", Toast.LENGTH_LONG).show();
            EventBus.getDefault().post(new NetEvent(true));
        } else {
            EventBus.getDefault().post(new NetEvent(false));  
            Toast.makeText(context, "已經斷開網路", Toast.LENGTH_LONG).show();
        }
    } 
}

}

//建一個網路連線狀態類## 標題 ##

package com.bawei.com.duanwan.network;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;

public class NetUtils {

// 判斷網路連線狀態
public static boolean isNetworkConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager
                .getActiveNetworkInfo();
        if (mNetworkInfo != null) {
            return mNetworkInfo.isAvailable();
        }
    }
    return false;
}

// 判斷wifi狀態
public static boolean isWifiConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWiFiNetworkInfo = mConnectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (mWiFiNetworkInfo != null) {
            return mWiFiNetworkInfo.isAvailable();
        }
    }
    return false;
}

// 判斷行動網路
public static boolean isMobileConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mMobileNetworkInfo = mConnectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mMobileNetworkInfo != null) {
            return mMobileNetworkInfo.isAvailable();
        }
    }
    return false;
}

// 獲取連線型別
public static int getConnectedType(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager
                .getActiveNetworkInfo();
        if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {
            return mNetworkInfo.getType();
        }
    }
    return -1;
}
/**
 * 設定網路
 * @param paramContext
 */
public static void startToSettings(Context paramContext) {
    if (paramContext == null)
        return;
    try {
        if (Build.VERSION.SDK_INT > 10) {
            paramContext.startActivity(new Intent(
                    "android.settings.SETTINGS"));
            return;
        }
    } catch (Exception localException) {
        localException.printStackTrace();
        return;
    }
    paramContext.startActivity(new Intent(
            "android.settings.WIRELESS_SETTINGS"));
}

}

**

用於網路的事件重點內容

**
package com.bawei.com.duanwan.netstate;

/**
* @Description:用於網路的事件
* @author http://blog.csdn.net/finddreams
*/
public class NetEvent {
public boolean isNet;

public NetEvent(boolean isNet) {

    this.isNet = isNet;
}

public boolean isNet() {
    return isNet;
}

}
**

//MainActivity

**
package com.bawei.com.duanwan;

import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.bawei.com.duanwan.receiver.NetReceiver;
import de.greenrobot.event.EventBus;

public class MainActivity extends AppCompatActivity {
private NetReceiver mReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initReceive();
}

private void initReceive() {
    mReceiver = new NetReceiver();
    IntentFilter mFilter = new IntentFilter();
    mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    registerReceiver(mReceiver, mFilter);
}

@Override
protected void onDestroy() {
    unregisterReceiver(mReceiver);
    EventBus.getDefault().unregister(this);
    super.onDestroy();
}

}