Как обнаружить интернет соединение в андроид студии
У меня есть следующий код, чтобы определить, есть ли доступ к интернету или нет. Но если у меня нет подключения к интернету, только подключение для передачи данных включено, оно все еще работает. что я должен делать?
ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo ninfo = cManager.getActiveNetworkInfo();
if(ninfo!=null && ninfo.isConnected())
{
Toast.makeText(this, "Available",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "Not Available",Toast.LENGTH_LONG).show();
}
2 ответа
Использовать этот NetworkUtils
учебный класс:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetworkUtils {
private static int TYPE_WIFI = 1;
private static int TYPE_MOBILE = 2;
private static int TYPE_NOT_CONNECTED = 0;
public static int getConnectivityStatus(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI
&& networkInfo.getState() == NetworkInfo.State.CONNECTED) {
return TYPE_WIFI;
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE
&& networkInfo.getState() == NetworkInfo.State.CONNECTED) {
return TYPE_MOBILE;
}
}
return TYPE_NOT_CONNECTED;
}
public static boolean isNetworkConnected(Context context) {
int networkStatus = getConnectivityStatus(context);
if (networkStatus == TYPE_WIFI || networkStatus == TYPE_MOBILE) {
return true;
} else {
return false;
}
}
}
Используйте как это:
if(NetworkUtils.isNetworkConnected(this)){
}
Использовать ConnectivityManager
учебный класс. Вот класс Java:
ConnectivityManager manager =(ConnectivityManager) getApplicationContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
if (null != activeNetwork) {
if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI){
//we have WIFI
}
if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE){
//we have cellular data
}
} else{
//we have no connection :(
}
не забудьте попросить разрешения в AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>