获得 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

  1. 从设置中输入电池
  2. 点击了不受监控的应用程序
  3. 添加您的应用程序

步骤2

  1. 从设置中输入应用
  2. 点按您的应用程序
  3. 点击移动数据
  4. 启用流量节省程序时允许应用程序