Crear una aplicación en Android Studio que permita leer un fichero JSON con tareas que hay que hacer cada día de la semana (Lo mejor, Kotlin, Automatización, Android)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/taskTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tarea para el día"
android:layout_centerInParent="true"
android:textSize="30sp" />
</RelativeLayout>
MainActivity.kt
package com.example.myapplication
import android.os.Bundle
import android.widget.TextView
import androidx.activity.ComponentActivity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.json.JSONArray
import java.io.BufferedReader
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
import java.util.*
class MainActivity : ComponentActivity() {
private lateinit var taskTextView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
taskTextView = findViewById(R.id.taskTextView)
// Obtiene el día actual del mes
val dayOfMonth = Calendar.getInstance().get(Calendar.DAY_OF_MONTH).toString()
// Obtener la tarea correspondiente al día actual de manera asíncrona
GlobalScope.launch(Dispatchers.IO) {
val task = getTaskForDay("https://www.jesusninoc.com/tareas.json", dayOfMonth)
withContext(Dispatchers.Main) {
taskTextView.text = "$task"
}
}
}
private suspend fun getTaskForDay(urlString: String, dayToCheck: String): String {
val url = URL(urlString)
val connection = url.openConnection() as HttpURLConnection
val bufferedReader = BufferedReader(InputStreamReader(connection.inputStream))
val response = StringBuilder()
var line: String?
while (bufferedReader.readLine().also { line = it } != null) {
response.append(line)
}
val jsonArray = JSONArray(response.toString())
for (i in 0 until jsonArray.length()) {
val jsonObject = jsonArray.getJSONObject(i)
if (jsonObject.getString("dia") == dayToCheck) {
return jsonObject.getString("tarea")
}
}
return ""
}
}