1,继承BroadcastReceiver,重新onReceive方法
public class NetChangeReceiver extends BroadcastReceiver {
public boolean wifi;
public boolean mobile;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State type;
type = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (NetworkInfo.State.CONNECTED == type) {
wifi = true;
mobile = false;
}
type = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if (NetworkInfo.State.CONNECTED == type) {
wifi = false;
mobile = true;
}
if (wifi){
ToastUtil.toastLongMessage("当前使用无线网络播放");
}
if (mobile){
ToastUtil.toastLongMessage("当前使用流量播放");
}
}
}
2,在清单中注册,添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...
<receiver
android:name=".utils.NetChangeReceiver"
android:label="NetChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
3,在需要的地方调用,我用的是SP保存是否开启网络提醒
private void networkToRemind(Boolean open) {
if (open) {
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
mNetChangeReceiver = new NetChangeReceiver();
registerReceiver(mNetChangeReceiver, filter);
ConnectivityManager con = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
boolean mobile = con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
if (wifi) {
//执行相关操作
ToastUtil.toastLongMessage("当前使用无线网络播放");
} else if (mobile) {
ToastUtil.toastLongMessage("当前使用流量播放");
}
}else {
if (mNetChangeReceiver!=null) {
unregisterReceiver(mNetChangeReceiver);
}
}
}
4,记得注销广播
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
if (mNetChangeReceiver!=null) {
unregisterReceiver(mNetChangeReceiver);
}
}