Чтобы проверить подключение к Интернету в приложении Android программным способом с помощью Kotlin, вы можете использовать несколько методов. Вот несколько примеров:
Метод 1: использование класса ConnectivityManager
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
fun isInternetConnected(context: Context): Boolean {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val network = connectivityManager.activeNetwork
val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
return networkCapabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
?: false
}
Метод 2: использование класса NetworkInfo (не рекомендуется на уровне API 29)
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkInfo
fun isInternetConnected(context: Context): Boolean {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo: NetworkInfo? = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
}
Метод 3. Использование запроса Ping
import java.io.IOException
import java.net.InetSocketAddress
import java.net.Socket
fun isInternetConnected(): Boolean {
return try {
val timeoutMs = 1500
val socket = Socket()
val socketAddress = InetSocketAddress("8.8.8.8", 53)
socket.connect(socketAddress, timeoutMs)
socket.close()
true
} catch (e: IOException) {
false
}
}
Метод 4. Использование разрешения Интернета в манифесте
Добавьте следующее разрешение в файл AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
Затем вы можете использовать следующий метод для проверки подключения к Интернету:
import java.net.InetAddress
fun isInternetConnected(): Boolean {
return try {
val address: InetAddress = InetAddress.getByName("www.google.com")
!address.equals("")
} catch (e: Exception) {
false
}
}