此代码用于检查所有 Android 版本(包括 Android 9.0 及更高版本)的网络可用性:
public static boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
// For 29 api or above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
NetworkCapabilities capabilities = cm.getNetworkCapabilities(cm.getActiveNetwork());
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) ||
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
} else return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
不要忘记在清单中添加网络状态权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
另外,在方法之前添加 @SuppressWarnings("deprecation") 以避免 android studio deprecation 警告。