24. Servicio

Versión para imprimir.

A. Instrucciones

Vista de Formulario
Formulario con datos

Pasos a seguir

  1. Primero hay que crear un proyecto en un servidor PHP con el contenido de index.php. Video sobre como crear el proyecto PHP.

  2. Crear un proyecto para phone & tablet de tipo Empty Activity. Video sobre como crear el proyecto.

  3. Las aplicaciones se pueden correr sobre un dispositivo real habilitado para desarrollo o en un emulador dentro de la computadora de desarrollo. En este último caso, si no tienes configurado un emulador, hay que crearlo. Video sobre como crear el emulador.

  4. Modifica el proyecto con el contenido de los archivos que se muestran en esta lección.

  5. Ejecuta el proyecto sobre el emulador de teléfono o el dispositivo real. Video sobre como ejecutar el proyecto.

B. Archivos

Servidor PHP

Proyecto Android

C. index.php

<?php echo 'Hola'; ?>

D. app/res/values/strings.xml

<resources>
 <string
   name="app_name">Servicio</string>
 <string name="esperando">Esperando…</string>
</resources>

E. app/res/layout/activity_main.xml

Diseño de vista de Formulario
Diseño de vista de Formulario
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">

 <TextView
   android:id="@+id/mensaje"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/esperando"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

F. app/java/io.github.gilpgdam.servicio/MainActivity.kt

package io.github.gilpgdam.servicio

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.net.HttpURLConnection
import java.net.URL

class MainActivity :
 AppCompatActivity() {
 override fun onCreate(
  savedInstanceState: Bundle?
 ) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_main)
  val mensaje =
   findViewById<TextView>(R.id.mensaje)
  Thread {
   val connection =
    URL("https://holaphp.gilbertopachec3.repl.co/")
     .openConnection()
      as HttpURLConnection
   connection.connect()
   val code =
    connection.responseCode;
   if (200 <= code && code < 300) {
    val text =
     connection.inputStream.use {
      it.reader()
       .use { reader -> reader.readText() }
     }
    mensaje.post {
     mensaje.text = text
    }
   } else {
    mensaje.post {
     mensaje.text =
      connection.responseMessage
    }
   }
   connection.disconnect()
  }.start()
 }
}

G. app/manifest/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="io.github.gilpgdam.servicio">

 <uses-permission android:name="android.permission.INTERNET" />
 <application
   android:allowBackup="true"
   android:icon="@mipmap/ic_launcher"
   android:label="@string/app_name"
   android:roundIcon="@mipmap/ic_launcher_round"
   android:supportsRtl="true"
   android:theme="@style/Theme.Servicio">
  <activity
    android:name=".MainActivity"
    android:exported="true">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>

</manifest>