我已通过使用以下代码了解互联网连接。当应用程序在前台时,NetworkInfo
连接状态为 CONNECTED
但应用程序在后台或被杀死时,连接状态为 DISCONNECTED/BLOCKED
即使手机已连接 3G .
我看了another questions通过 stackoverflow 但没有解决这个问题。
public class InternetConnectionControl {
private NetworkInfo networkInfo;
private NetworkInfo getNetworkInfo() {
if (networkInfo == null) {
ConnectivityManager _cm = ServiceUtil.getConnectivityManager(MyApplication.getContext());
networkInfo = _cm.getActiveNetworkInfo();
}
return networkInfo;
}
public void setNetworkInfo(NetworkInfo networkInfo) {
this.networkInfo = networkInfo;
}
private boolean isConnectedToWifi() {
NetworkInfo info = getNetworkInfo();
return (info != null && info.isConnectedOrConnecting() && info.getType() == ConnectivityManager.TYPE_WIFI);
}
private boolean isConnectedToMobile() {
NetworkInfo info = getNetworkInfo();
return (info != null && info.isConnectedOrConnecting() && info.getType() == ConnectivityManager.TYPE_MOBILE);
}
public boolean isConnectedToInternet() {
boolean isWifiConnected = isConnectedToWifi();
boolean isMobileConnected = isConnectedToMobile();
return isWifiConnected || isMobileConnected;
}
}
最佳答案
您的设备是三星?三星有省电模式,您必须允许您的应用通过以下方式:
第一步
- 从设置中输入电池
- 点击了不受监控的应用
- 添加您的应用
第二步
- 从设置中输入应用
- 点按您的应用
- 点按移动数据
- 启用流量节省程序时允许应用
关于android - 获得 NetworkInfo 状态 :DISCONNECTED/BLOCKED even if phone is connected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009200/