Abra la aplicación para Android cuando la conexión a Internet esté activada, de lo contrario no mostrará ningún mensaje de conexión a Internet
Acabo de crear una aplicación de Android para obtener datos de un sitio web. Quiero comprobar si el dispositivo tiene una conexión a Internet o no. Si el dispositivo tiene conexión a Internet, ejecutar mi código y buscar los datos y mostrarlo, de lo contrario si el dispositivo no tiene Internet, a continuación, mostrar el mensaje de conexión a Internet no. He intentado este código para comprobar la conexión a internet. ¿Cómo puedo llamar al código cuando hay una conexión a Internet?
Mi código Java:
- Bauerca drag-sort-listview ejemplo sencillo
- ArcMenu mainImage Necesito en la parte inferior de la pantalla. OnMeasure no lo deja entrar en la parte inferior de la pantalla
- Historia del grupo de canales de Pubnub
- Android handler .postdelay () cada minuto cambio de hora en el reloj?
- ¿Por qué Android tiene su propia implementación de URI y no utiliza la implementación de Java por defecto?
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_primary); new FetchWebsiteData().execute(); } }); } private class FetchWebsiteData extends AsyncTask<Void, Void, String[]> { String websiteTitle, websiteDescription,websiteDescription1,websiteDescription2,websiteDescription3,listValue,listValue1; ProgressDialog progress; private Context context; //check Internet connection. private void checkInternetConnection(){ ConnectivityManager check = (ConnectivityManager) this.context. getSystemService(Context.CONNECTIVITY_SERVICE); if (check != null) { NetworkInfo[] info = check.getAllNetworkInfo(); if (info != null) for (int i = 0; i <info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { Toast.makeText(context, "Internet is connected", Toast.LENGTH_SHORT).show(); } } else{ Toast.makeText(context, "not conencted to internet", Toast.LENGTH_SHORT).show(); } } @Override protected void onPreExecute() { super.onPreExecute(); //some code here } @Override protected String[] doInBackground(Void... params) { ArrayList<String> hrefs=new ArrayList<String>(); try { } } catch (IOException e) { e.printStackTrace(); } //get the array list values for(String s:hrefs) { //some code } //parsing first URL String [] resultArray=null; try { } catch (IOException e) { e.printStackTrace(); } //parsing second URL String [] resultArray1=null; try { } catch (IOException e) { e.printStackTrace(); } try{ } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String[] result) { ListView list=(ListView)findViewById(R.id.listShow); ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_list_item_1,result); list.setAdapter(arrayAdapter); mProgressDialog.dismiss(); } } }
¿Cómo puedo ejecutar el código cuando la conexión está abierta y cómo mostrar el mensaje cuando la aplicación no tiene conexión a Internet?
- Google Maps Android en el país
- Implementación de Autocompletar con ListView en Android
- Clases vs Actividades en Android
- La primera compilación con AndroidStudio falló
- Cómo mostrar sólo la hora actual utilizando DateFormat.getDateTimeInstance () en android
- Rotar Marcador y Mover Animación en Mapa como Uber Android
- Almacén de datos local ParseQuery orderByDescending con createdAt no funciona
- No se pudo resolver: com.google.android.gms: play-services-gcm: 7.5.
prueba esto
//check internet connection public static boolean isNetworkStatusAvialable (Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager != null) { NetworkInfo netInfos = connectivityManager.getActiveNetworkInfo(); if(netInfos != null) { return netInfos.isConnected(); } } return false; }
Una vez que el método devuelva el valor que tiene que comprobar
//detect internet and show the data if(isNetworkStatusAvialable (getApplicationContext())) { Toast.makeText(getApplicationContext(), "Internet detected", Toast.LENGTH_SHORT).show(); new FetchWebsiteData().execute(); } else { Toast.makeText(getApplicationContext(), "Please check your Internet Connection", Toast.LENGTH_SHORT).show(); }
public static boolean hasInternetAccess(Context context) { if (isNetworkAvailable(context)) { try { HttpURLConnection urlc = (HttpURLConnection) (new URL("http://clients3.google.com/generate_204") .openConnection()); urlc.setRequestProperty("User-Agent", "Android"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(1500); urlc.connect(); return (urlc.getResponseCode() == 204 && urlc.getContentLength() == 0); } catch (IOException e) { Log.e(TAG, "Error checking internet connection", e); } } else { Log.d(TAG, "No network available!"); } return false; }
Aquí está la clase para obtener información sobre su conexión a Internet https://gist.github.com/emil2k/5130324
Simplemente copia y pega en tu código y usa sus métodos
Utilice este método para comprobar la disponibilidad de la red
public static boolean isNetworkAvailable(Context context) { try{ ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); boolean s= activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting(); return s; } catch(Exception e){ System.out.println("exception network"+e); return false; } }
Si vuelve verdadero usted puede ir a continuación con la llamada de la red más Toast un mensaje del unavailablity de la red.
Crear una clase NetworkInformation.java
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetworkInformation { private static NetworkInfo networkInfo; public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); try{ networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); } catch (Exception e) { e.printStackTrace(); } // test for connection for WIFI if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) { return true; } networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); // test for connection for Mobile if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) { return true; } return false; } }
Ahora compruebe si la red está disponible o no antes de llamar a un asynctask como este:
if(NetworkInformation.isConnected(YourClassName.this)) { new FetchWebsiteData().execute(); }else{ Toast.makeText(NewsAndEvents.this,R.string.no_connection,Toast.LENGTH_LONG).show(); }
No olvide incluir los siguientes permisos en AndroidManifest.xml :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
https://stackoverflow.com/a/9570292/4241807 le indica cómo comprobar la conectividad de red y, a continuación, coloque su mensaje en la parte "else" del código
Use debajo del código y haga una clase como NetworkAvailablity.java
public class NetworkAvailablity { public static boolean checkNetworkStatus(Context context) { boolean HaveConnectedWifi = false; boolean HaveConnectedMobile = false; ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] netInfo = cm.getAllNetworkInfo(); for (NetworkInfo ni : netInfo) { if (ni.getTypeName().equalsIgnoreCase("WIFI")) if (ni.isConnected()) HaveConnectedWifi = true; if (ni.getTypeName().equalsIgnoreCase("MOBILE")) if (ni.isConnected()) HaveConnectedMobile = true; } return HaveConnectedWifi || HaveConnectedMobile; } }
Y en el código de su uso de estas líneas siguientes que comprueban que Internet está disponible o no
if (NetworkAvailablity.checkNetworkStatus(getActivity())) { //code here } else { // give message here by Toast or create the alert dilog Toast.makeText(context, "No network is available",Toast.LENGTH_LONG).show(); }
Para comprobar si el usuario se conecta al wifi o cualquier punto de acceso es mejor comprobar este método primero para ver si el usuario tiene alguna conexión o no y si devuelve true puede comprobar si tiene conexión real o no con el siguiente método
public static boolean isOnline(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); return netInfo != null && netInfo.isConnectedOrConnecting(); }
Comprobar si el usuario tiene tráfico real para enviar solicitud a través de la red
Tenga en cuenta que no debe llamar al método hasTraffic () en el subproceso principal (puede utilizar AsyncTask)
public static boolean hasTraffic(){ try { URL url = new URL("http://www.google.com/"); HttpURLConnection urlc = (HttpURLConnection)url.openConnection(); urlc.setRequestProperty("User-Agent", "test"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(2000); // mTimeout is in seconds urlc.connect(); if (urlc.getResponseCode() == 200) { Log.d("check Traffic ", "has traffic"); return true; } else { return false; } } catch (Exception e) { Log.i("warning", "Error checking internet connection", e); return false; } }
Comprobar la conexión a internet
new AsyncTask<Void, Void, Boolean>() { @Override protected void onPostExecute(Boolean flag) { if(flag == true){ // do whatever you want }else{ cantAccessToService(); } } @Override protected Boolean doInBackground(Void... voids) { if(isOnline(SplashActivity.this) && hasTraffic() ){ return true ; }else{ return false ; } } }.execute();
//Implement this code in MainActivity and check if isConnectingToInternet(), then allow Otherwise show the No Internet Connection message. public boolean isConnectingToInternet() { ConnectivityManager connectivity = (ConnectivityManager) _context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) for (int i = 0; i < info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } return false; }
- Cómo cambiar el tamaño del texto en lugares autocompletefragment en android?
- Crear una matriz de marcadores Google Maps V2