Si se está desarrollando la aplicación de Android, que está basada en Internet, debe haber una función que verifique la conectividad a Internet e informe al usuario que no hay Internet disponible. Entonces, en este artículo, se ha demostrado paso a paso. Sobre cómo comprobar la conectividad a Internet. Eche un vistazo a la siguiente imagen que ofrece una descripción general de la discusión.
Implementación paso a paso
Paso 1: crear un proyecto de actividad vacío
Cree un proyecto de estudio de Android de actividad vacío. Consulte Cómo crear/iniciar un nuevo proyecto en Android Studio para saber cómo crear un proyecto de actividad vacío. Y seleccione Kotlin como lenguaje de programación.
Paso 2: trabajar con el archivo acitivity_main.xml
- El diseño principal de la aplicación contiene solo un botón. El cual al hacer clic aparece un brindis que contiene el estado de la conectividad.
- Para implementar la misma interfaz de usuario, invoque el siguiente código dentro del archivo acitivity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/buttonCheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CHECK FOR CONNECTION" android:textColor="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Interfaz de usuario de salida:
Paso 3: trabajar con el archivo MainActivity.kt
- El archivo MainActivity.kt contiene algunas API ya integradas que solían manejar la conectividad de la red.
- Primero, debemos registrar la actividad con el servicio ConnectivityManager.
- En segundo lugar, debemos verificar la versión de Android. si la versión es inferior a M, utiliza la API activeNetworkInfo, o si la versión es igual o superior a M, utiliza la API NetworkCapabilities.
- Para implementar lo mismo, invoque el siguiente código dentro del archivo MainActivity.kt. Se agregan comentarios para una mejor comprensión.
Kotlin
import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // register the UI element button val checkButton: Button = findViewById(R.id.buttonCheck) // handle the button click to trigger // checkForInternet function // and show the Toast message according to it. checkButton.setOnClickListener { if (checkForInternet(this)) { Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "Disconnected", Toast.LENGTH_SHORT).show() } } } private fun checkForInternet(context: Context): Boolean { // register activity with the connectivity manager service val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager // if the android version is equal to M // or greater we need to use the // NetworkCapabilities to check what type of // network has the internet connection if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Returns a Network object corresponding to // the currently active default data network. val network = connectivityManager.activeNetwork ?: return false // Representation of the capabilities of an active network. val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false return when { // Indicates this network uses a Wi-Fi transport, // or WiFi has network connectivity activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true // Indicates this network uses a Cellular transport. or // Cellular has network connectivity activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true // else return false else -> false } } else { // if the android version is below M @Suppress("DEPRECATION") val networkInfo = connectivityManager.activeNetworkInfo ?: return false @Suppress("DEPRECATION") return networkInfo.isConnected } } }
Producción:
Publicación traducida automáticamente
Artículo escrito por adityamshidlyali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA