网络可用检查始终在Android 8.0中返回false

时间:2017-12-11 11:52:23

标签: android android-8.0-oreo

我正在使用以下代码进行网络可用检查

    public static boolean isNetworkAvailable(Context context) {
    int[] networkTypes = {ConnectivityManager.TYPE_MOBILE,
            ConnectivityManager.TYPE_WIFI};
    try {
        ConnectivityManager connectivityManager =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        for (int networkType : networkTypes) {
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            if (activeNetworkInfo != null &&
                    activeNetworkInfo.getType() == networkType)
                return true;
        }
    } catch (Exception e) {
        return false;
    }
    return false;
}

相同的代码在所有版本中都能正常运行。但我在Android Oreo 8.0中面临奇怪的问题

此方法始终在Android 8.0版本甚至网络连接中返回 false

设备 - Google Pixel

注意:不知道其Android版本问题或设备问题。

任何人帮助我

1 个答案:

答案 0 :(得分:0)

解决此问题的三个步骤。忽略代码格式

  1. 在项目清单文件中添加权限
00110011
01000011
00010011
10000011
  1. 创建广播接收器以进行网络状态检查

    公共类NetworkChangeReceiver扩展了BroadcastReceiver {

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    }

  2. 创建静态方法并在应用程序中的任何位置使用它

  

公共静态布尔值isOnline(){           返回NetworkChangeReceiver.isConnected(); }