Intents

Qué es un intent?

Intents and filters

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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

MainActivity.java

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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