Ответ
Вызов сети на главном потоке приведёт к NetworkOnMainThreadException начиная с Android 3.0 (Honeycomb). Это происходит потому, что Android запрещает долгие операции (такие как сетевые запросы) в UI-потоке, чтобы избежать задержек в отрисовке интерфейса (ANR - Application Not Responding).
Как исправить:
Используйте фоновые потоки или корутины:
// Coroutines (рекомендуется)
lifecycleScope.launch {
val result = withContext(Dispatchers.IO) {
// сетевой запрос
}
// обновляем UI с результатом
}
// Или AsyncTask (устаревший)
class NetworkTask : AsyncTask<Void, Void, String>() {
override fun doInBackground(vararg params: Void): String {
// сетевой запрос
}
override fun onPostExecute(result: String) {
// обновляем UI
}
}