获得 NetworkInfo 状态:DISCONNECTED/BLOCKED 即使 phone 已连接
Got NetworkInfo state:DISCONNECTED/BLOCKED even if phone is connected
我已通过使用以下代码了解互联网连接。当应用程序在前台时,NetworkInfo
连接状态为 CONNECTED
但应用程序在后台或被杀死时,连接状态为 DISCONNECTED/BLOCKED
即使 phone 已连接 3G。
我通过 Whosebug 查看 another questions,但没有解决这个问题。
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;
}
}
你的设备是三星的?三星有省电模式,您必须允许您的应用通过以下方式:
步骤 1
- 从设置中输入电池
- 点击了不受监控的应用程序
- 添加您的应用程序
步骤2
- 从设置中输入应用
- 点按您的应用程序
- 点击移动数据
- 启用流量节省程序时允许应用程序
我已通过使用以下代码了解互联网连接。当应用程序在前台时,NetworkInfo
连接状态为 CONNECTED
但应用程序在后台或被杀死时,连接状态为 DISCONNECTED/BLOCKED
即使 phone 已连接 3G。
我通过 Whosebug 查看 another questions,但没有解决这个问题。
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;
}
}
你的设备是三星的?三星有省电模式,您必须允许您的应用通过以下方式:
步骤 1
- 从设置中输入电池
- 点击了不受监控的应用程序
- 添加您的应用程序
步骤2
- 从设置中输入应用
- 点按您的应用程序
- 点击移动数据
- 启用流量节省程序时允许应用程序