Qui, il mio dispositivo Android supporta sia Wi-Fi e 3G. In determinati momenti, quale rete è disponibile su questo dispositivo. Perché il mio requisito è quando 3g è disponibile, devo caricare una piccola quantità di dati. quando la rete wifi è disponibile, è necessario caricare tutti i dati. Quindi, devo verificare che la connessione sia wifi o 3G. Mi aiuti per favore. Grazie in anticipo.come controllare la rete wifi o 3G è disponibile su dispositivo Android
risposta
Io uso questo:
/**
* Checks if we have a valid Internet Connection on the device.
* @param ctx
* @return True if device has internet
*
* Code from: http://www.androidsnippets.org/snippets/131/
*/
public static boolean haveInternet(Context ctx) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
return false;
}
if (info.isRoaming()) {
// here is the roaming option you can change it if you want to
// disable internet while roaming, just return false
return false;
}
return true;
}
È inoltre necessario
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
in AndroidMainfest.xml
per ottenere il tipo di rete è possibile utilizzare questo frammento di codice:
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//mobile
State mobile = conMan.getNetworkInfo(0).getState();
//wifi
State wifi = conMan.getNetworkInfo(1).getState();
e quindi utilizzarlo come quella:
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}
per ottenere il tipo di rete mobile vorrei provare TelephonyManager#getNetworkType o NetworkInfo#getSubtypeName
Questo codice mi dà errore quando lo uso su un tablet senza sim. –
È necessario aggiungere di seguito il permesso in Android file manifesto:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Successivamente è possibile utilizzare le seguenti funzioni per verificare se la rete wifi o mobile è connessa o meno
public static boolean isWifiConnected(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((netInfo != null) && netInfo.isConnected());
}
public static boolean isMobileConnected(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return ((netInfo != null) && netInfo.isConnected());
}
Alcuni riferimenti da developer.android.com sono:
prima ottenere un riferimento al ConnectivityManager e poi check the Wifi and 3G status del dispositivo. Avrai bisogno del permesso ACCESS_NETWORK_STATE per utilizzare questo servizio.
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mWifi.isAvailable() == true) {
return "Connected to WiFi";
} else if (mMobile.isAvailable() == true) {
return "Connected to Mobile Network";
} else return "No internet Connection"
È possibile utilizzare questo metodo per verificare se la connessione a Internet è 2G, 3G o 4G:
public String getNetworkClass(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = mTelephonyManager.getNetworkType();
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return "2G";
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "3G";
case TelephonyManager.NETWORK_TYPE_LTE:
return "4G";
default:
return "Unknown";
}
}
E metodo che utilizza seguente è possibile verificare se internet è disponibile o non, e ottenere se si sta accedendo a Internet tramite una rete mobile o WiFi:
public String getNetworkType(Context context){
String networkType = null;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
networkType = "WiFi";
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
networkType = "Mobile";
}
} else {
// not connected to the internet
}
return networkType;
}
- 1. WiFi e 3G possono funzionare contemporaneamente su Android?
- 2. Come forzare una connessione GPRS invece di 3G o Wifi?
- 3. In iOS, come rilevare da Javascript (Web) il dispositivo è connesso via 3G o Wifi?
- 4. Come disabilitare/abilitare la rete, passare a Wifi nell'emulatore Android?
- 5. Abilita simultaneamente l'interfaccia wifi e 3G su Android
- 6. Android: è possibile avere connessioni 3G e Wifi contemporaneamente?
- 7. Android - Come sapere se il dispositivo è solo WiFi?
- 8. come testare il download e caricare la velocità wifi/3g?
- 9. Verifica se il cellulare utilizza WIFI o Data/3G
- 10. Adobe Air - Rileva se la connessione è WIFI, 3G o EDGE
- 11. iPhone attiva tipo di rete (2G, 3G, WiFi)
- 12. BroadcastReceiver quando è cambiato lo stato della rete wifi o 3g
- 13. Come gestire purgeIdleCellConnections sulla rete 3G?
- 14. Rileva se la connessione è wifi, 3G o EDGE in Android?
- 15. Android: come rilevare se un dispositivo è WiFi o WiFi + Cellulare
- 16. Come rimanere connessi tramite rete mobile dopo aver connesso WIFI su Android?
- 17. È possibile forzare il traffico di rete tramite Wifi o la rete TMobile?
- 18. iPhone HE-AAC Streaming su rete mobile (3G)
- 19. Avvio manuale della connessione 3G in Android e mantenimento su
- 20. Controllare WiFi e GPS isConnected o Not in Android?
- 21. Per controllare se la sessione è disponibile o non
- 22. HttpClient su Android: NoHttpResponseException tramite UMTS/3G
- 23. Rileva l'indirizzo IP wifi su Android?
- 24. Come determinare se l'utente è su Edge o 3G su iPhone
- 25. Come posso controllare il dispositivo Android?
- 26. Selezionare una rete WiFi
- 27. UIStatusBarStyleBlackTranslucent non è disponibile su questo dispositivo
- 28. Come disattivare a livello di programmazione WiFi sul dispositivo Android?
- 29. Connessione rete WiFi tramite app
- 30. Come verificare se 3g è attivo o meno in Android
@govardhan: +1 Anch'io ho questo problema. hai avuto qualche risposta? – Praveen
Dai un'occhiata a http://stackoverflow.com/questions/2789612/how-can-i-check-whether-an-android-device-is-connected-to-the-web http://stackoverflow.com/questions/3119607/how-to-be-notify-on-wifi-network-status-change http://stackoverflow.com/questions/3211978/how-to-check-internet-connectivity-in-android http://stackoverflow.com/questions/2919414/get-network-type http://stackoverflow.com/search?q = ConnectivityManager – Fedor
Questo link contiene il codice necessario http://stackoverflow.com/a/9256972/191246. – ccpizza