Intents
Qué es un intent?
Los intents: tipos y ejemplos (punto 7 de la unidad 2)
Intents en developer.android.com
Verificar que existe al menos una actividad para lanzar el intent
Intent sendIntent = new Intent(Intent.ACTION_SEND);
...
// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(sendIntent, title);
// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}
Ejemplo de intent implícito
public void openWebPage(String url) {
Uri webpage = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "Error al lanzar el intent", Toast.LENGTH_SHORT).show();
}
}
Ejemplo de intent explícito
intent = new Intent(this, SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("usuario", "Carmelo Cotón);
extras.putInt("edad", 27);
intent.putExtras(extras);
startActivity(intent);
Ejemplo: Comunicación de actividades mediante intents
package com.example.comunicacionactividades;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.example.comunicacionactividades.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ActivityMainBinding binding;
int code = 1;
public static final String RESULTADO = "resultado";
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
binding.button1.setOnClickListener(this);
binding.button2.setOnClickListener(this);
binding.button3.setOnClickListener(this);
binding.button4.setOnClickListener(this);
binding.button5.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view == binding.button1) {
//ACTION_VIEW. Abrir el navegador con una URL indicada como dato
String enlace = "https://iesalandalus.org";
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(enlace));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "Error al lanzar el intent", Toast.LENGTH_SHORT).show();
}
}
if (view == binding.button2) {
//ACTION_VIEW. Muestra dirección en mapa indicada como dato
// (El emulador o AVD en el que se pruebe debe incluir las API de Google)
String dir = "Calle+Larios+Malaga";
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + dir));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "Error al lanzar el intent", Toast.LENGTH_SHORT).show();
}
}
if (view == binding.button3) {
// ACTION_DIAL.Marca el número de teléfono indicado como dato.
String tlf = "951297929";
intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + tlf));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "Error al lanzar el intent", Toast.LENGTH_SHORT).show();
}
}
if (view == binding.button4) {
intent = new Intent(this, SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("usuario", binding.editText.getText().toString());
extras.putInt("edad", 27);
intent.putExtras(extras);
startActivity(intent);
}
if (view == binding.button5) {
intent = new Intent(this, SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("usuario", binding.editText.getText().toString());
extras.putInt("edad", 27);
intent.putExtras(extras);
startActivityForResult(intent, code);
}
}
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == code && resultCode == RESULT_OK) {
String res = data.getExtras().getString(RESULTADO);
binding.editText.setText(res);
}
}
}
SecondActivity.java
package com.example.comunicacionactividades;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.example.comunicacionactividades.databinding.ActivityMainBinding;
import com.example.comunicacionactividades.databinding.ActivitySecondBinding;
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
private ActivitySecondBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
binding = ActivitySecondBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
binding.button.setOnClickListener(this);
Bundle extras = getIntent().getExtras();
//recupera el valor asociado a “usuario”
String str = extras.getString("usuario");
//recupera el valor asociado a “edad”
int edad = extras.getInt("edad");
binding.textView.setText(str + ", " + edad);
}
@Override
public void onClick(View view) {
if (view == binding.button) {
Intent intent = new Intent();
intent.putExtra(MainActivity.RESULTADO, binding.editText.getText().toString());
setResult(RESULT_OK, intent);
finish();
}
}
}
Código de Comunicacion de actividades
Ejercicio 2 de la tarea online
Más información:
Comunicar actividades a través de Intents

Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.