Intent Tipos de Intents - Almagro

Anuncio
Teoría
Intents
Fecha 2016/04/12
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.
Teoría
Intents
Fecha 2016/04/12
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:
Teoría
Intents
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
}
...
}
Fecha 2016/04/12
Teoría
Intents
Fecha 2016/04/12
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);
}
...
}
Teoría
Intents
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);
}
Fecha 2016/04/12
Descargar