This commit is contained in:
Ваше Имя
2025-09-24 14:01:30 +04:00
parent b2f1553554
commit a4a51b7966
3 changed files with 40 additions and 57 deletions
@@ -1,63 +1,53 @@
package com.example.myapplication
import android.Manifest
import android.content.pm.PackageManager
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService
class MainActivity : ComponentActivity() {
// Запрос разрешения на контакты
private val requestContactsPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
Toast.makeText(this, "Доступ к контактам разрешён", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Доступ к контактам запрещён", Toast.LENGTH_SHORT).show()
}
}
// Запрос разрешения на галерею
private val requestGalleryPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
Toast.makeText(this, "Доступ к галерее разрешён", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Доступ к галерее запрещён", Toast.LENGTH_SHORT).show()
}
}
private lateinit var tvStatus: TextView
private lateinit var connectivityManager: ConnectivityManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnContacts = findViewById<Button>(R.id.btnContacts)
val btnGallery = findViewById<Button>(R.id.btnGallery)
tvStatus = findViewById(R.id.tvNetworkStatus)
connectivityManager = getSystemService()!!
// При нажатии на кнопку "Контакты"
btnContacts.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Уже есть доступ к контактам", Toast.LENGTH_SHORT).show()
} else {
requestContactsPermission.launch(Manifest.permission.READ_CONTACTS)
}
}
// Проверяем сеть при старте
updateNetworkStatus()
// При нажатии на кнопку "Галерея"
btnGallery.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_IMAGES)
== PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Уже есть доступ к галерее", Toast.LENGTH_SHORT).show()
} else {
requestGalleryPermission.launch(Manifest.permission.READ_MEDIA_IMAGES)
// Подписываемся на изменения сети
connectivityManager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
runOnUiThread {
tvStatus.text = "Сеть доступна"
Toast.makeText(this@MainActivity, "Подключение появилось", Toast.LENGTH_SHORT).show()
}
}
}
override fun onLost(network: Network) {
runOnUiThread {
tvStatus.text = "Сеть недоступна"
Toast.makeText(this@MainActivity, "Подключение потеряно", Toast.LENGTH_SHORT).show()
}
}
})
}
// Проверка текущего состояния сети
private fun updateNetworkStatus() {
val network = connectivityManager.activeNetwork
val caps = connectivityManager.getNetworkCapabilities(network)
val connected = caps?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
tvStatus.text = if (connected) "Сеть доступна" else "Сеть недоступна"
}
}