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();
}
}