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 -2
View File
@@ -2,8 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<application <application
android:allowBackup="true" android:allowBackup="true"
@@ -1,63 +1,53 @@
package com.example.myapplication package com.example.myapplication
import android.Manifest import android.net.ConnectivityManager
import android.content.pm.PackageManager import android.net.Network
import android.net.NetworkCapabilities
import android.os.Bundle import android.os.Bundle
import android.widget.Button import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.getSystemService
import androidx.core.content.ContextCompat
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
// Запрос разрешения на контакты private lateinit var tvStatus: TextView
private val requestContactsPermission = registerForActivityResult( private lateinit var connectivityManager: ConnectivityManager
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()
}
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
val btnContacts = findViewById<Button>(R.id.btnContacts) tvStatus = findViewById(R.id.tvNetworkStatus)
val btnGallery = findViewById<Button>(R.id.btnGallery) connectivityManager = getSystemService()!!
// При нажатии на кнопку "Контакты" // Проверяем сеть при старте
btnContacts.setOnClickListener { updateNetworkStatus()
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)
}
}
// При нажатии на кнопку "Галерея" // Подписываемся на изменения сети
btnGallery.setOnClickListener { connectivityManager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_IMAGES) override fun onAvailable(network: Network) {
== PackageManager.PERMISSION_GRANTED) { runOnUiThread {
Toast.makeText(this, "Уже есть доступ к галерее", Toast.LENGTH_SHORT).show() tvStatus.text = "Сеть доступна"
} else { Toast.makeText(this@MainActivity, "Подключение появилось", Toast.LENGTH_SHORT).show()
requestGalleryPermission.launch(Manifest.permission.READ_MEDIA_IMAGES) }
} }
}
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 "Сеть недоступна"
} }
} }
+4 -10
View File
@@ -4,16 +4,10 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<Button <TextView
android:id="@+id/btnContacts" android:id="@+id/tvNetworkStatus"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Доступ к контактам" /> android:text="Проверка сети..."
android:textSize="18sp" />
<Button
android:id="@+id/btnGallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Доступ к галерее" />
</LinearLayout> </LinearLayout>