android android-permissions android-internet

Problema de verificación de conectividad a internet de Android



android-permissions android-internet (5)

Soy nuevo en el desarrollo de Android y estoy trabajando en una aplicación de Android que requiere que el teléfono esté conectado a Internet, a través de Wifi, EDGE o 3G.

Este es el código que estoy usando para verificar si hay conexión a internet disponible

public static boolean isConnected() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo().isConnectedOrConnecting(); }

También he establecido estos permisos en el archivo de manifiesto

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Esto funciona bien en el emulador que ejecuta la versión 1.5 de Android cuando 3G está habilitado, pero se bloquea cuando deshabilito la conexión 3G. Mi aplicación lanza una excepción de puntero nulo cuando llamo isConnectedOrConnecting (). Lo mismo ocurre también en mi HTC Desire con Android 2.1.

Espero que alguien sepa la solución a esto.

¡Gracias por adelantado!


Escribí este método para manejar esto:

public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (ni!=null && ni.isAvailable() && ni.isConnected()) { return true; } else { return false; } }

Una forma de hacerlo supongo ...


Has utilizado este fragmento.

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; } }


Para comprobar si Internet está allí, o no, se puede verificar solo en el dispositivo ...... En el emulador puede que no funcione ... Tengo el siguiente código y está funcionando al 100% en el dispositivo Android ..... :)

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.txt); b = checkInternetConnection(); if(b!=true) { tv.setText("net is not dr......."); } else { tv.setText("net is dr......."); } } //Check weather Internet connection is available or not public boolean checkInternetConnection() { final ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE); if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) { return true; } else { System.out.println("Internet Connection Not Present"); return false; } }

}


Si el choque es directamente en su línea:

return cm.getActiveNetworkInfo().isConnectedOrConnecting();

entonces eso significa que getActiveNetworkInfo() devolvió un null , porque no hay una red activa; en ese caso, su método isConnected() debería devolver false .


Use esto para determinar si está conectado a wifi / 3g:

is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected(); isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(); network = is3g||isWifi;

y esto para habilitar wifi tu mismo:

WifiManager wifiManager = (WifiManager) MainWindowYuval.this.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(true);