This commit is contained in:
Ваше Имя
2025-09-24 14:18:44 +04:00
parent a4a51b7966
commit b8d120454d
2 changed files with 67 additions and 36 deletions
@@ -1,53 +1,55 @@
package com.example.myapplication package com.example.myapplication
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.os.Bundle import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.core.content.getSystemService import java.io.File
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
private lateinit var tvStatus: TextView private lateinit var etInput: EditText
private lateinit var connectivityManager: ConnectivityManager private lateinit var btnSave: Button
private lateinit var btnLoad: Button
private lateinit var tvResult: TextView
private val fileName = "myfile.txt"
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)
tvStatus = findViewById(R.id.tvNetworkStatus) etInput = findViewById(R.id.etInput)
connectivityManager = getSystemService()!! btnSave = findViewById(R.id.btnSave)
btnLoad = findViewById(R.id.btnLoad)
tvResult = findViewById(R.id.tvResult)
// Проверяем сеть при старте btnSave.setOnClickListener { saveToFile() }
updateNetworkStatus() btnLoad.setOnClickListener { loadFromFile() }
// Подписываемся на изменения сети
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) { private fun saveToFile() {
runOnUiThread { val text = etInput.text.toString()
tvStatus.text = "Сеть недоступна" if (text.isEmpty()) {
Toast.makeText(this@MainActivity, "Подключение потеряно", Toast.LENGTH_SHORT).show() Toast.makeText(this, "Введите текст", Toast.LENGTH_SHORT).show()
} return
}
})
} }
// Проверка текущего состояния сети val file = File(filesDir, fileName)
private fun updateNetworkStatus() { file.writeText(text)
val network = connectivityManager.activeNetwork
val caps = connectivityManager.getNetworkCapabilities(network)
val connected = caps?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
tvStatus.text = if (connected) "Сеть доступна" else "Сеть недоступна" Toast.makeText(this, "Файл сохранён", Toast.LENGTH_SHORT).show()
}
private fun loadFromFile() {
val file = File(filesDir, fileName)
if (file.exists()) {
val content = file.readText()
tvResult.text = "Содержимое файла: $content"
} else {
tvResult.text = "Файл не найден"
}
} }
} }
+32 -3
View File
@@ -4,10 +4,39 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<TextView <EditText
android:id="@+id/tvNetworkStatus" android:id="@+id/etInput"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Проверка сети..." android:hint="Введите текст"
android:inputType="text" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp">
<Button
android:id="@+id/btnSave"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Сохранить" />
<Button
android:id="@+id/btnLoad"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Загрузить" />
</LinearLayout>
<TextView
android:id="@+id/tvResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Здесь появится содержимое файла"
android:textSize="18sp" /> android:textSize="18sp" />
</LinearLayout> </LinearLayout>