Java 网络对象的NetworkInfo.isConnected()(在API 23中已弃用)的替代方法
我想使用Java 网络对象的NetworkInfo.isConnected()(在API 23中已弃用)的替代方法,java,android,Java,Android,我想使用ConnectivityManager检查活动网络是否可以访问internet,即getActiveNetworkInfo().isConnected() 我读到我们仍然可以使用getActiveNetwork()来获取活动网络,但是对于network对象,似乎没有类似的isConnected方法。如何解决 不推荐使用的代码可在此处找到:您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中 public static b
ConnectivityManager
检查活动网络是否可以访问internet,即getActiveNetworkInfo().isConnected()
我读到我们仍然可以使用getActiveNetwork()
来获取活动网络,但是对于network
对象,似乎没有类似的isConnected
方法。如何解决
不推荐使用的代码可在此处找到:您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中
public static boolean isNetworkAvailable(Context context) {
if (context == null) return false;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return true;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
}
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
} else {
return false;
}
} else {
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
return info != null && info.isConnected();
}
}
return false;
}
您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中
public static boolean isNetworkAvailable(Context context) {
if (context == null) return false;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return true;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
}
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
} else {
return false;
}
} else {
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
return info != null && info.isConnected();
}
}
return false;
}
注意“connected”不是“can access the internet”@RyanMentley,那么如果我想使用网络对象,isConnected()的替代方案是什么?注意“connected”不是“can access the internet”@RyanMentley,那么如果我想使用网络对象,isConnected()的替代方案是什么?根据文档
getActiveNetwork())
添加到API级别23中。根据文档,在API级别23中添加了getActiveNetwork()
。