lab3
This commit is contained in:
@@ -2,8 +2,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
|
||||
@@ -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 "Сеть недоступна"
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,10 @@
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnContacts"
|
||||
<TextView
|
||||
android:id="@+id/tvNetworkStatus"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Доступ к контактам" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnGallery"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="Доступ к галерее" />
|
||||
android:text="Проверка сети..."
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
||||
Reference in New Issue
Block a user