获取当前网络类型且监听网络变化:
public class NetworkManager extends BaseManager {
/** 上一次的网络连接类型 */
private int lastConnectType = -1;
private List<OnNetworkChangeListener> onNetworkChangeListeners = new ArrayList<>();
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
int currentType = -1;
if (networkInfo != null && networkInfo.isConnected()) {
currentType = networkInfo.getType();
} else {
currentType = -1;
}
if (lastConnectType != currentType) {
lastConnectType = currentType;
for (OnNetworkChangeListener onNetworkChangeListener : onNetworkChangeListeners) {
onNetworkChangeListener.onNetworkChange(currentType);
}
}
}
};
@Override
public void onManagerCreate(CDApplication application) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
application.registerReceiver(broadcastReceiver, intentFilter);
}
/**
* 获取当前的网络连接类型 {@link NetworkInfo#getType()}
* 注意:手机网络并不是只有wifi和移动流量。
*
* @return 网络类型包括:wifi,移动数据,蓝牙共享,网线,VPN等等,
*/
public int getNetWorkType() {
return lastConnectType;
}
/** 添加网络变化监听器 */
public void addOnNetworkChangeListener(OnNetworkChangeListener onNetworkChangeListener) {
onNetworkChangeListeners.add(onNetworkChangeListener);
}
/** 移除网络变化监听器 */
public void removeOnNetworkChangeListener(OnNetworkChangeListener onNetworkChangeListener) {
onNetworkChangeListeners.remove(onNetworkChangeListener);
}
public interface OnNetworkChangeListener {
/** 网络变化的回调 */
void onNetworkChange(int networkType);
}
}
常见网络类型:
ConnectivityManager
public static final int TYPE_NONE = -1;
public static final int TYPE_MOBILE = 0;
public static final int TYPE_WIFI = 1;
public static final int TYPE_BLUETOOTH = 7;//蓝牙可以上网哦
本文介绍了一个用于监测和管理Android设备网络状态变化的实用类NetworkManager。该类能够获取当前网络类型并监听网络变化,通过注册监听器的方式通知应用程序网络状态的变化。
672

被折叠的 条评论
为什么被折叠?



