• No se han encontrado resultados

Teoría Intents Fecha 2016/04/12

N/A
N/A
Protected

Academic year: 2021

Share "Teoría Intents Fecha 2016/04/12"

Copied!
5
0
0

Texto completo

(1)

Intent

Un Intent es una descripción abstracta de una operación que se quiere llevar a cabo. Puede utilizarse para iniciar una nueva actividad (startActivity), para enviar información a algún componente del tipo broadcastReceiver interesado (broadcastIntent), y para iniciar un servicio o linkearse algún servicio (startService, bindService) o comunicarse con un servicio que se ejecuta en segundo plano (background Service).

Un Intent provee la facilidad de ligar aplicaciones tardíamente (no en tiempo de ejecución) es decir un Late Runtime Binding entre diferentes aplicaciones.

Su utilización más significativa es la de lanzar nuevas Activities.

Un Intent representa la voluntad de realizar alguna acción o tarea, como realizar una llamada de teléfono o visualizar una página web. Un Intent nos permite lanzar una actividad o servicio de nuestra aplicación o de una aplicación diferente. Tienen un gran potencial en Android, por lo que resulta importante conocerlas y dominarlas.

Tipos de Intents

Intents explícitos:

Se indica exactamente el componente a lanzar. Su utilización típica es la de ir ejecutando los diferentes componentes internos de una aplicación. Por ejemplo, desde la actividad MainActivity lanzamos AcercaDeActivity por medio de un Intent explícito.

Intent implícito:

Pueden solicitar tareas abstractas, como “quiero tomar una foto” o “quiero enviar un mensaje”. Además las intenciones se resuelven en tiempo de ejecución, de forma que el sistema mirará cuantos componentes han registrado la posibilidad de ejecutar ese tipo de Intent. Si encuentra varias el sistema puede preguntar al usuario el componente que prefiere utilizar.

Además, los Intents ofrecen un servicio de paso de mensajes (parámetros) que permite interconectar datos entre componentes.

Se utilizan Intents cada vez que queramos:

 Lanzar una actividad (startActivity() y startActivityForResult())

 Lanzar un servicio (startService())

 Lanzar un anuncio de tipo broadcast (sendBroadcast())

 Conectarnos con un servicio (bindService())

En muchas ocasiones un Intent no será inicializada por la aplicación, si no por el sistema, por ejemplo, cuando pedimos visualizar una página Web.

En otras ocasiones será necesario que la aplicación inicialice su propia intención. Para ello se creará un objeto de la clase Intent.

(2)

Cuando se crea un Intent (es decir, se instancia un objeto de tipo Intent) esta contiene información de interés para que el sistema trate adecuadamente la intención o para el componente que recibe la intención. Puede incluir la siguiente información:

Nombre del componente: Identificamos el componente que queremos lanzar con la intención. Hay que utilizar el nombre de clase totalmente cualificado que queremos lanzar (org.pulman.tp03.AcercaDe). El nombre del componente es opcional. En caso de no indicarse se utilizará otra información de la intención para obtener el componente a lanzar. A este tipo de intenciones se les conocía como intenciones explícitas.

Acción: Una cadena de caracteres donde indicamos la acción a realizar o en caso de un Receptor de anuncios (Broadcast receiver), la acción que tuvo lugar y que queremos reportar. La clase Intent define una serie de constantes para acciones genéricas que se enumeran a continuación:

(3)

Iniciando una nueva activity y enviarle parámetros.

Como un novato!

public class MainActivity extends ActionBarActivity { private void IniciarSegundaActividad(){

Intent nuevaActivity = new Intent(this, Main2Activity.class); Bundle datos = new Bundle();

nuevaActivity.putExtra("ParamNombre", "Erika Galindo"); nuevaActivity.putExtra("ParamEdad" , 35);

startActivity(nuevaActivity); }

... }

public class Main2Activity extends ActionBarActivity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

Intent elIntent = getIntent(); // gets the previously created intent String parametro1 = elIntent.getStringExtra("ParamNombre");

Integer parametro2 = elIntent.getIntExtra("ParamEdad", 0); }

... }

Con un poco más de Experiencia (digamos dos meses de programación)

public class MainActivity extends ActionBarActivity { private void IniciarSegundaActividad (){

Intent nuevaActivity = new Intent(this, Main2Activity.class); Bundle datos = new Bundle();

datos.putString("ParamNombre", "Erika Galindo"); datos.putInt("ParamEdad", 35); nuevaActivity.putExtras(datos); startActivity(nuevaActivity); } ... }

public class Main2Activity extends ActionBarActivity { @Override

protected void onCreate(Bundle savedInstanceState) { // Igual que arriba

} ... }

(4)

Como se debe hacer correctamente

public class MainActivity extends ActionBarActivity {

public static final String PARAMETRO1 = "com.example.polshu.tpn01.PARAMETRO1"; public static final String PARAMETRO2 = "com.example.polshu.tpn01.PARAMETRO2"; private void IniciarSegundaActividad(){

Intent nuevaActivity = new Intent(this, Main2Activity.class); Bundle datos = new Bundle();

datos.putString(MainActivity.PARAMETRO1, "Erika Galindo"); datos.putInt(MainActivity.PARAMETRO2, 35); nuevaActivity.putExtras(datos); startActivity(nuevaActivity); } ... }

public class Main2Activity extends ActionBarActivity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

Intent elIntent = getIntent(); // gets the previously created intent Bundle datos = elIntent.getExtras();

String parametro1 = datos.getString (MainActivity.PARAMETRO1);

Integer parametro2 = datos.getInt (MainActivity.PARAMETRO2, 0); }

... }

(5)

Ejemplos de Intents utiles

Abrir una pagina web

public void paginaWeb(View view) {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/")); startActivity(intent);

}

Llamar por Telefono

public void llamadaTelefono(View view) {

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:1554448888"));

startActivity(intent); //

// El punto de arriba me agrego lo siguiente en el AndroidManifest.xml // <uses-permission android:name="android.permission.CALL_PHONE" /> //

}

Abrir Google Maps en una ubicacion especifica.

public void googleMaps(View view) {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:41.656313,-0.877351")); startActivity(intent);

}

Tomar una Foto

public void tomarFoto(View view) {

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivity(intent);

}

Enviar un Email

public void mandarEmail(View view) {

Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_SUBJECT, "Asunto del correo");

intent.putExtra(Intent.EXTRA_TEXT, "Este es el texto del correo");

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); startActivity(intent);

Referencias

Documento similar

Los participantes de este estudio que refieren realizar algún tipo de ejercicio prefieren actividades de intensidad ligera a moderada, con mayor componente de

Quizás, la teoría constitucional del mercado debe introducirse parcialmente en los cánones de los objetivos educativos: esto ocurre ya de modo indirec- to, en cuanto que

explicaciones de este fenómeno que implican la asunción de distintos criterios definitorios y clasificaciones de las conductas de acoso, de la actitud de la

Por otro lado, el resultado institucional (R), tanto de las normas pura- mente constitutivas como de las normas que confieren poderes puede ser un cambio normativo de alcance

No obs- tante, ambos se caracterizan por seguir una distri- bución longitudinal a lo largo de los principales ejes fluviales (barrancos y gargantas) y caminos de

Para poder realizar esta medida ha sido necesario colocar una antena receptora a unos metros de distancia de la antena transmisora, que en este caso es la antena

En este punto, conviene señalar que el estudio del lenguaje forma parte, al igual que la neurociencia, la psicología cognitiva, la antropología cognitiva, etc., de lo

Este trabajo tiene como objetivo introducir los bosques contextuales, una nueva técnica basada en modelos gráficos probabilísticos usando co- nocimiento externo en tiempo real