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);
}
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);
}
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();
}
}
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();
}
}
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);
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);
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);
}
}
}
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);
}
}
}
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();
}
}
}
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();
}
}
}
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.