PUE: Desarrollo de Aplicaciones Android – lección 6

Clase Final->No puede heredar más?

Intent implícito->¿Qué quiero hacer y con qué dato?
¿Qué aplicación que recibe una data de la forma “tel:93674995802” y queremos hacer un DIAL el sistema operativo te lleva hasta la activity que sabe tratar con este tipo de opciones.

Intent explícito->habitualmente es para el movimiento para dentro de la aplicación. Estoy en A y quiero ir a B. Le marcamos un destino conocido, con el nombre de la clase: B.class

Parámetro action:VALOR y data:VALOR

Intent chooser -> Selector de con qué aplicacion quieres abrir eso.

Objetivos de hoy: el array de strings, pasarlo a objetos. Primero a clase y luego a objetos.

Ejercicio: app de compra de entradas.

Ejercicio: Listview y haga conexion a internet y haga intercambio JSON JavaScript Object Notation. Habrá conectividad hacia afuera, y necesitan un permiso: el de internet. En el Manifest se declaran los permisos que necesita tu aplicación.




Si hacemos CTRL+D en una linea, la duplicamos:

alt+insert:

import es.pue.android.listadeinvitados.model.* cogeria todo

invitados = new ArrayList<>();
//añadir tres invitados
invitados.add(new Invitado("Pepe", "1"));
invitados.add(new Invitado("Maria", "2"));
invitados.add(new Invitado("Josefa", "3"));

 

Overriding: sobre-escritura de los métodos de la clase, siempre que haya una relacion de herencia.

Todas las clases siempre heredan de object.

OJO, ha que hacer esto eh!!!:

intents inplícitos:

constructor por defecto: aquel que no lleva parámetros

objeto uri= uniform resource indicator

intent.setData(Uri.parse(telefono))
public void llamarInvitado(View view) {
    //intent implicito hacia pp telefonia android
    Log.i("INVIT_APP",telefono);
    Intent intent = new Intent(); //implícito
    intent.setAction(Intent.ACTION_DIAL); //Qué hacer
    intent.setData(Uri.parse("tel:" + telefono)); //tel:9354354387
    startActivity(intent);

}

 

Ahora cambiaremos la accion: en lugar de DIAL, CALL:

intent.setAction(Intent.ACTION_CALL);

PEta por tema de permisos hay que añadrir try y catch SecurityException:

Log i = informacion

Log e = error

public void llamarInvitado(View view) {
//intent implicito hacia pp telefonia android
Log.i("INVIT_APP",telefono);
Intent intent = new Intent(); //implícito
intent.setAction(Intent.ACTION_CALL); //Qué hacer
intent.setData(Uri.parse("tel:" + telefono)); //tel:9354354387

try {
startActivity(intent);
} catch (SecurityException sex){
Log.e("InfoActivity", "Falta permiso de llamada");
} catch (Exception ex){
Log.e("InfoActivity","Error general");
}



}

“Toast” para informar al usuario: una especie de globito de informacion:

“Poner literales”: todos los mensajes, ponerlos en Strings como variables, para internacionalizacion de la App

try {
    startActivity(intent);
} catch (SecurityException sex){
    Log.e("InfoActivity", "Falta permiso de llamada");
    Toast.makeText(this, "Verifique que tiene permiso de llamada", Toast.LENGTH_LONG).show();
} catch (Exception ex){
    Log.e("InfoActivity","Error general");
}

 

Declararemos un permiso en el AndroidManifest.xml :

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

    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

 

objet:T -> tipo concreto

Creamos el nuevo layout y lo personalizamos:

2 widgets TextView

decoradores, @NonNull, no nulo, no permite que le pases un nulo, si le pasas un nulo, no te deja compilar:

notacion Landa de Java (recortada), con flechita,c aracteristica de Java8 en adelante


Esto se ha de hacer, siempre que queramos enviar objetos (con strings no hace falta lo de Parcerable)

Solucion chapucera:

poner esto como public:

y usar InvitadosActivity.INVITADO

BEST PRACTICE: crear clase constantes

Android Profiler:


ViewHolder – patrón ViewHolder -> Mirar en la documentación


Proyecto: una aplicación para comprar entradas


Compra entradas App
Juego? ->Qué juego queremos – Pista: objeto lista desplegable llamado spinner
Combinar spinner con item_click
Cuántas entradas quieres?

Resultado: Euros.
PRecio entrada x juego: FIJO o HardCoded

2a fase:
Tipo Entrada: Adulto o Infantil


Códigos fuente del Proyecto “ListaInvitados” (código de el profesor Ricardo):

ListaInvitados v1
ListaInvitados Final

new values resource file y creamos una Lista de elementos no volátiles
<string-array name=”lista”>
<item>Tiro arco</item>
<item>Jabalina</item>
<item>Martillo</item>

Y esto lo usamos en el spinner, para leer la lista


Deja un comentario