In questo articolo vedremo come verificare se il dispositivo è connesso ad internet in modo da visualizzare un messaggio.
Avevo già parlato in un precedente articolo su come verificare la connessione ad internet, la differenza sta nell'utilizzo di due Classi diverse a seconda della Versione SDK di Android.
Inoltre spiegherò come verificare se è una connessione WiFi oppure Dati.
Fino alla Versione SDK 22 (Android 5.1 - Android Lollipop) poteva andare bene la spiegazione nel precedente articolo nonostante in realtà funzionasse bene anche nelle versioni successive.
Dalla Versione SDK 23 (Android 6 - Android Marshmallow) è stata introdotta una nuova Classe (NetworkCapabilities) più specifica per queste versioni di Android e quindi non compatibile con le precedenti.
Quindi se la vostra app può essere installata su versioni precedenti ad Android 6 questa soluzione è la migliore.
Per verificare la connessione internet del dispositivo dobbiamo sempre aggiungere il permesso di accedere allo stato della connessione internet, per questo apriamo il file AndroidManifest.xml ed inseriamo questa riga di codice prima del tag application
Ecco come si presenta il file MainActivity.kt
Ecco il risultato su un dispositivo con SDK > 22
Ecco il risultato su un dispositivo con SDK <= 22
Avevo già parlato in un precedente articolo su come verificare la connessione ad internet, la differenza sta nell'utilizzo di due Classi diverse a seconda della Versione SDK di Android.
Inoltre spiegherò come verificare se è una connessione WiFi oppure Dati.
Fino alla Versione SDK 22 (Android 5.1 - Android Lollipop) poteva andare bene la spiegazione nel precedente articolo nonostante in realtà funzionasse bene anche nelle versioni successive.
Dalla Versione SDK 23 (Android 6 - Android Marshmallow) è stata introdotta una nuova Classe (NetworkCapabilities) più specifica per queste versioni di Android e quindi non compatibile con le precedenti.
Quindi se la vostra app può essere installata su versioni precedenti ad Android 6 questa soluzione è la migliore.
Per verificare la connessione internet del dispositivo dobbiamo sempre aggiungere il permesso di accedere allo stato della connessione internet, per questo apriamo il file AndroidManifest.xml ed inseriamo questa riga di codice prima del tag application
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dm.tutorialwebview9 | |
import android.content.Context //Importazione della Classe: Context | |
import android.net.ConnectivityManager //Importazione della Classe: ConnectivityManager | |
import android.net.NetworkCapabilities //Importazione della Classe: NetworkCapabilities | |
import android.net.NetworkInfo //Importazione della Classe: NetworkInfo | |
import android.os.Build | |
import android.support.v7.app.AppCompatActivity | |
import android.os.Bundle | |
import android.widget.Toast.* | |
import kotlinx.android.synthetic.main.activity_main.* | |
class MainActivity : AppCompatActivity() { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
setSupportActionBar(toolbar) | |
// Utilizzare ConnectivityManager per verificare se si è effettivamente connessi a Internet e, | |
// in tal caso, quale tipo di connessione è in atto | |
val connectivity = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager | |
//variabili che conterranno stringhe di testo per visualizzare il risultato | |
//variabile che identifica il tipo di connessione (WiFi o Dati) | |
var networkTransport = "" | |
//variabile che identifica la versione SDK di Android | |
var sdkVersion = "" | |
//variabile che identifica se la connessione e disponibile o non disponibile | |
var available = "Nessuna" | |
//se la versione SDK è maggiore o uguale di 23 bisogna utilizzare | |
//NetworkCapabilities | |
if(Build.VERSION.SDK_INT > 22 ){ | |
// Per dispositivi con API >= 23 | |
sdkVersion = "Versione > 22" | |
val networkCapabilities = connectivity.getNetworkCapabilities(connectivity.activeNetwork) | |
// NET_CAPABILITY_VALIDATED - Indica che la connettività su questa rete è stata validata con successo. | |
// NET_CAPABILITY_INTERNET - Indica che le rete dovrebbe essere in grado di raggiungere Internet. | |
if(networkCapabilities!=null && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) | |
&& networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)){ | |
available = "C'è" | |
if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){ | |
networkTransport = "WiFi" | |
} | |
else if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){ | |
networkTransport = "Dati" | |
} | |
} | |
} | |
//se la versione SDK è minore o uguale di 22 bisogna utilizzare | |
//NetworkInfo | |
else | |
{ | |
// Per dispositivi con API < 23 | |
sdkVersion = "Versione < 22" | |
val activeNetwork: NetworkInfo? = connectivity.activeNetworkInfo | |
val isConnected: Boolean = activeNetwork?.isConnected == true | |
val isWiFi: Boolean = activeNetwork?.type == ConnectivityManager.TYPE_WIFI | |
val isMob: Boolean = activeNetwork?.type == ConnectivityManager.TYPE_MOBILE | |
if(isConnected) { | |
available = "C'è" | |
if (isWiFi) { | |
networkTransport = "WiFi" | |
} else if (isMob) { | |
networkTransport = "Dati" | |
} | |
} | |
} | |
//visualizzazione dello stato connessione e versione SDK in un Toast Message | |
makeText(this, "$available connessione $networkTransport \n\nSDK = $sdkVersion", LENGTH_LONG).show() | |
} | |
} |
Ecco il risultato su un dispositivo con SDK <= 22
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento