Java 是否有办法测试移动数据可用性(如果启用,则不保证I';m连接到Internet)?
我已尝试使用以下功能来测试Internet可用性:Java 是否有办法测试移动数据可用性(如果启用,则不保证I';m连接到Internet)?,java,android,xml,networking,Java,Android,Xml,Networking,我已尝试使用以下功能来测试Internet可用性: public boolean isNetworkAvailable(){ ConnectivityManager conn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ Network net=
public boolean isNetworkAvailable(){
ConnectivityManager conn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
Network net=conn.getActiveNetwork();
NetworkCapabilities nc=conn.getNetworkCapabilities(net);
if(net==null){
return false;
}else{
return true;
}}
return false;
}
它工作得很好,但如果移动设备没有互联网,并且移动数据已启用,则应用程序将继续崩溃。因此,如果有人试图解决这个问题,请告诉我如何解决。我正在做我的第一个Android项目。我在这里测试了一些解决方案,但仍然不起作用
谢谢回复 要检查您的设备是否已连接到internet,请使用以下方法,如果您的设备已连接到internet,则返回
true
这支持WiFi和移动数据
public boolean isOnline(Context context) {
boolean isConnected = false;
ConnectivityManager mConnectivityMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
// Checking internet connectivity
NetworkInfo activeNetwork = null;
if (mConnectivityMgr != null) {
activeNetwork = mConnectivityMgr.getActiveNetworkInfo(); // Deprecated in API 29
}
isConnected = activeNetwork != null;
} else {
Network[] allNetworks = mConnectivityMgr.getAllNetworks(); // added in API 21 (Lollipop)
for (Network network : allNetworks) {
NetworkCapabilities networkCapabilities = mConnectivityMgr.getNetworkCapabilities(network);
if (networkCapabilities != null) {
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
|| networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
|| networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET))
isConnected = true;
}
}
}
return isConnected;
}
public boolean isOnline(上下文){
布尔值未连接=假;
ConnectivityManager mConnectivityMgr=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务);
if(Build.VERSION.SDK_INT
您还可以查看更多的internet功能是否有一种方法可以在确定我是否连接之前“ping”到google服务器。@BOUSBAbadredd查看一下非常感谢,我在AsyncTask类中完成了这项工作,它解决了问题。