9

C'è un modo per verificare se l'utente sta utilizzando un dispositivo (questo vale soprattutto per i tablet) con connessione cellulare ?. Cioè, gli smartphone sono dotati di Wi-Fi e Cellulare (generalmente) integrati, ma alcuni tablet vengono forniti solo con Wi-Fi. Come posso sapere che tipo di dispositivo sta eseguendo la mia applicazione?Android: come rilevare se un dispositivo è WiFi o WiFi + Cellulare

ho provato la seguente, senza risultati:

cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE); 
wifi = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI); 

if (cell) tv_1.setText("The tablet has cellular"); 
    else tv_1.setText("The tablet does not have cellular"); 
if (wifi) tv_2.setText("The tablet has wifi"); 
    else tv_2.setText("The tablet does not have wifi"); 

Il problema è che entrambi i confronti ritornano sempre vero, anche se si tratta di un tablet che non ha cellulare.

Ho solo bisogno di sapere se il dispositivo ha uno slot per schede SIM (modello con cellulare) o è un modello che ha solo WiFi, è possibile?

Grazie in anticipo.

risposta

6

Ecco estratto dal mio codice (che funziona finora):

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); 
NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
if (mWifi!=null) isOnWifi = mWifi.isConnected(); 
if (mEthernet!=null) isOnEthernet = mEthernet.isConnected(); 
if (m3G!=null) is3G = m3G.isConnected(); 
+0

Ho provato su alcuni dispositivi e sembra funzionare perfettamente, almeno per quello che mi serviva. Vieni a pensare, è abbastanza logico. Grazie per l'aiuto. –

+2

Questo non funzionerà se si dispone di una connessione 3G valida ma la connessione dati è disattivata. – Manish

+0

Beh, forse non capisco il tuo punto, ma quello di cui avevo bisogno era di rilevare se il dispositivo ha o meno capacità di dati cellulari e, a seconda di ciò, avviare una o un'altra attività. L'ho provato nella situazione che descrivi qui e sembra funzionare senza problemi. –

Problemi correlati