Passa ai contenuti principali

Android Studio - WebView: verifica della connessione (parte 2)

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
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ecco come si presenta il file MainActivity.kt
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


Ecco il risultato su un dispositivo con SDK <= 22


Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main...

Android Studio - Rinominare il progetto

Rinominare il progetto Android Studio ATTENZIONE!: non eseguire questa procedura se l'app è stata pubblicata su Google Play Store Quando si vuole cambiare nome al progetto: nome cartella in cui è contenuto il progetto package name bisogna eseguire questi passaggi: Andare nella cartella dove è contenuto il progetto Creare una copia del progetto in questione Rinominare la cartella copiata con il nome dell'app (non usare spazi tra le parole) Ora è necessario dire ad Android Studio il nome del nuovo progetto  Aprire Android Studio Aprire il progetto creato in precedenza Una volta caricato il progetto cliccare Build Cliccare Clean Project Attendere che venga eseguito il processo di "pulitura" Cliccare ancora su Build Cliccare su Rebuild Project Attendere che venga ricostruito il progetto Ora aprire la cartella app fino a visualizzare la cartella java Cliccare sull'ingranaggio  Deselezionare la voce Compact Middle Packa...

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.