In questo articolo vedremo un esempio pratico su come verificare se il dispositivo è connesso ad internet.
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.
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
Il risultato finale del file AndroidManifest.xml
Ora è necessario aggiungere questa funzione al file MainActivity.kt subito dopo la funzione onCreate
Aggiungere poi questo controllo all'interno della funzione onCreate
Questo è il risultato finale del file MainActivity.kt
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.
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
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.dm.tutorialwebview11"> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |
<application | |
android:allowBackup="true" | |
android:icon="@mipmap/ic_launcher" | |
android:label="@string/app_name" | |
android:roundIcon="@mipmap/ic_launcher_round" | |
android:supportsRtl="true" | |
android:theme="@style/Theme.TutorialWebView11"> | |
<activity android:name=".MainActivity"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
</application> | |
</manifest> |
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
private fun isConnected(context: Context): Boolean | |
{ | |
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager | |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | |
////per versioni Android uguali o superiori ad Android M (Android 6.0 - API 23) | |
val nw = connectivityManager.activeNetwork ?: return false | |
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false | |
return when { | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true | |
//per altri dispositivi che sono in grado di connettersi con Ethernet | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true | |
//per controllare la connessione Internet tramite Bluetooth | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) -> true | |
else -> false | |
} | |
} | |
else //per versioni Android inferiori ad Android M (Android 6.0 - API 23) | |
{ | |
return connectivityManager.activeNetworkInfo?.isConnected ?: false | |
} | |
} |
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
if(isConnected(this)) | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo è connesso ad internet | |
} | |
else | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo NON è connesso ad internet | |
Toast.makeText(this, "Non connesso ad internet", Toast.LENGTH_LONG).show() | |
} |
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.tutorialwebview11 | |
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.os.Build | |
import androidx.appcompat.app.AppCompatActivity | |
import android.os.Bundle | |
import android.webkit.WebChromeClient | |
import android.webkit.WebView | |
import android.webkit.WebViewClient | |
import android.widget.Toast | |
class MainActivity : AppCompatActivity() { | |
var webview: WebView? = null | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
webview = findViewById(R.id.myweb) | |
webview!!.webViewClient = WebViewClient() | |
webview!!.settings.javaScriptEnabled = true | |
webview!!.webChromeClient = WebChromeClient() | |
webview!!.settings.domStorageEnabled = true | |
webview!!.settings.builtInZoomControls = true | |
webview!!.settings.setSupportZoom(true) | |
webview!!.overScrollMode = WebView.OVER_SCROLL_NEVER | |
webview!!.settings.useWideViewPort = true | |
webview!!.setInitialScale(1) | |
webview!!.loadUrl("https://davidetech.blogspot.com") | |
//controllo della connessione in fase di avvio dell'app | |
if(isConnected(this)) | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo è connesso ad internet | |
} | |
else | |
{ | |
//aggiungere qui eventuale codice da eseguire se il dispositivo NON è connesso ad internet | |
Toast.makeText(this, "Non connesso ad internet", Toast.LENGTH_LONG).show() | |
} | |
//fine del controllo | |
} | |
//funzione che verifica lo stato della connessione internet | |
private fun isConnected(context: Context): Boolean | |
{ | |
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager | |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | |
////per versioni Android uguali o superiori ad Android M (Android 6.0 - API 23) | |
val nw = connectivityManager.activeNetwork ?: return false | |
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false | |
return when { | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true | |
//per altri dispositivi che sono in grado di connettersi con Ethernet | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true | |
//per controllare la connessione Internet tramite Bluetooth | |
actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) -> true | |
else -> false | |
} | |
} | |
else //per versioni Android inferiori ad Android M (Android 6.0 - API 23) | |
{ | |
return connectivityManager.activeNetworkInfo?.isConnected ?: false | |
} | |
} | |
//fine della funzione che verifica lo stato della connessione internet | |
} |
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento