android | Intenciones implícitas y explícitas con ejemplos

Requisitos previos:

Este artículo tiene como objetivo informar sobre las intenciones implícitas y explícitas y cómo usarlas en una aplicación de Android.

¿Qué es la intención en Android?

Intent es un objeto de mensajería que pasa entre componentes como servicios, proveedores de contenido, actividades, etc. Normalmente , el método startActivity() se usa para invocar cualquier actividad.

Algunas de las funciones generales de la intención son:

  1. Empieza el servicio
  2. actividad de lanzamiento
  3. Mostrar página web
  4. Mostrar lista de contactos
  5. Difusión de mensajes

Métodos y su Descripción

Métodos Descripción
Contexto.startActivity() Esto es para lanzar una nueva actividad o hacer que una actividad existente se convierta en acción.
Contexto.startService() Esto es para iniciar un nuevo servicio o entregar instrucciones para un servicio existente.
Contexto.sendBroadcast() Esto es para entregar el mensaje a los receptores de difusión.

Clasificación
de intenciones Hay dos tipos de intenciones

1. Implicit Intent
2. Explicit Intent
  1. Intención implícita: al usar la intención implícita, el componente no puede especificarse. Una acción a realizar se declara por intención implícita. Luego, el sistema operativo Android filtrará el componente que responderá a la acción.
    Por ejemplo

    En el ejemplo anterior, no se especifica ningún componente, sino que se realiza una acción, es decir, se abrirá una página web. Mientras escribe el nombre de su página web deseada y haga clic en el botón ‘CLICK’. Su página web está abierta.

    Cómo crear una aplicación de Android para abrir una página web usando una intención implícita (con un ejemplo)

    • Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
    • Paso 2: abra el archivo «actividad_principal.xml» y agregue los siguientes widgets en un diseño de restricción .
      1. Un EditText para ingresar texto.
      2. Un botón para abrir la página web.
      Además, asigne ID para cada componente como se muestra en la imagen y el código a continuación. La ID asignada para un componente ayuda en la identificación del componente y se puede usar fácilmente en los archivos Java.
      Sintaxis:
      android:id="@+id/id_name"

      Aquí los ID dados: editText1 , button1
      Esto creará la interfaz de usuario de la aplicación.

    • Paso 3: ahora, después de la interfaz de usuario, este paso creará el backend de la aplicación. Para esto, abra el archivo “MainActivity.java” e instancia el componente (Botón) creado en el archivo XML usando el método findViewById(). Este método vincula el objeto creado a los componentes de la interfaz de usuario con la ayuda de la ID asignada.
      Sintaxis general:

      objeto ComponentType = (ComponentType)findViewById(R.id.IdOfTheComponent);

      Sintaxis para componentes usados ​​(EditText, Button):


      EditText editText = (EditText)findViewById(R.id.editText1);
      Botón botón = (Botón)findViewById(R.id.button1);

    • Paso 4: este paso implica configurar las operaciones para mostrar el mensaje Toast. Estas operaciones son las siguientes:

      a). Primero agregue el oyente en el botón y este botón abrirá la página web.


      button.setOnClickListener(nueva Vista.OnClickListener() {});

      b). Cree una variable de tipo String para almacenar el valor de ‘EditText’. El valor se acepta y se convierte en string.

      String url = editText1.getText().toString();

      C). Cree una clase de objeto Intent MainActivity.java para abrir la página web.

      Intención intención = nueva Intención (Intent.ACTION_VIEW, Uri.parse(url));

      d). El método startActivity() comienza a llamar a una página web para abrirla especificada por la intención.

      iniciarActividad(intención);

    Por lo tanto, el fragmento de código para Intención implícita:

    String url = editText1.getText().toString();
    Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(intent);
    

    Código completo de Intención implícita

    actividad_principal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
      
    <!-- add an edittext to input text -->
        <EditText
            android:id="@+id/editText1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="136dp"
            android:ems="10"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
      
    <!-- add a button for click -->
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editText1"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="49dp"
            android:layout_marginEnd="132dp"
            android:text="Click"
            app:layout_constraintEnd_toEndOf="@+id/editText1"
            app:layout_constraintTop_toBottomOf="@+id/editText1" />
      
    </android.support.constraint.ConstraintLayout>

    MainActivity.java

    package org.geeksforgeeks.implicitIntent_example;
      
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
      
    public class MainActivity extends Activity {
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            // Bind the components to their respective objects
            // by assigning their IDs
            // with the help of findViewById() method
            final EditText editText1 = (EditText)findViewById(R.id.editText1);
            Button button = (Button)findViewById(R.id.button1);
      
            // implementation of onClick event for Implicit Intent
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
      
                    // performing webpage open action
                    String url = editText1.getText().toString();
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                }
            });
        }
    }

    Producción:

  2. Intención explícita: con la intención explícita se puede especificar cualquier otro componente. En otras palabras, el componente de destino se especifica mediante una intención explícita. Por lo tanto, solo se invocará el componente de destino especificado.

    Por ejemplo:

    Ejemplo de intención explícita

    En el ejemplo anterior, hay dos actividades (FirstActivity, SecondActivity). Cuando hace clic en el botón ‘IR A OTRA ACTIVIDAD’ en la primera actividad, luego pasa a la segunda actividad. Cuando hace clic en el botón ‘IR A LA ACTIVIDAD DE INICIO’ en la segunda actividad, entonces pasa a la primera actividad. Esto se está haciendo a través de intención explícita.

    Cómo crear una aplicación de Android para pasar a la siguiente actividad usando intención explícita (con ejemplo)

    • Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
    • Paso 2: abra el archivo «actividad_principal.xml» y agregue los siguientes widgets en un diseño de restricción .
      1. Un botón para pasar a la segunda actividad.
      2. Un TextView para escribir texto.
      Además, asigne ID para cada componente (Botón, TextView) como se muestra en la imagen y el código a continuación. La ID asignada para un componente ayuda en la identificación del componente y se puede usar fácilmente en los archivos Java.
      Sintaxis:
      android:id="@+id/id_name"

      Aquí los ID dados: Button01 , TextView01 .
      Esto hará que la interfaz de usuario de la aplicación.

    • Paso 3: ahora, después de la interfaz de usuario, este paso creará el backend de la aplicación. Para esto, abra el archivo “MainActivity.java” e instancia el componente (Button, TextView) creado en el archivo XML usando el método findViewById(). Este método vincula el objeto creado a los componentes de la interfaz de usuario con la ayuda de la ID asignada.

      Sintaxis general:

      objeto ComponentType = (ComponentType)findViewById(R.id.IdOfTheComponent);

      Sintaxis para componentes usados ​​(Botón, TextView):

      1. Botón botón = (Botón)findViewById(R.id.Button01);
      2. TextView textView = (TextView)findViewById(R.id.TextView01);

    • Paso 4: este paso implica configurar las operaciones para crear una intención explícita. Estas operaciones son las siguientes:

      una. Primero agregue el oyente en el botón y al usar este botón pasará a otra actividad.

      button1.setOnClickListener(nueva Vista.OnClickListener() {});

      b. Ahora, crea una intención.


      Intent i = new Intent(getApplicationContext(), SecondActivityName.class);

      Parámetros: Esto es tener dos parámetros:

      • getApplicationContext(): Devuelve el contexto de toda la aplicación.
      • OtherActivityName.class: debe usar el nombre de su actividad aquí.

      Por lo tanto, el código para hacer una intención explícita es:

      Intent i = new Intent(getApplicationContext(), ActivityTwo.class);

      C. Ahora inicie la actividad dirigida.
      startActivity(i): Esto inicia la actividad objetivo.
      El fragmento de código para la intención explícita:

      Intent i = new Intent(getApplicationContext(), ActivityTwo.class);
      startActivity(i);
    • Paso 5: Ahora tenemos que crear una segunda actividad como actividad de destino.
      Los pasos para crear la segunda actividad son los siguientes:

      proyecto Android> Archivo> nuevo> Actividad> Actividad vacía

    • Paso 6: Ahora abra su segundo archivo xml.
      Agregue Button y TextView para volver a la actividad de inicio y para escribir texto sobre la actividad, respectivamente. Asigne ID a Button y Textview. La segunda actividad se muestra a continuación:
    • Paso 7: Ahora, abra el archivo java de su segunda actividad y realice la siguiente operación.
      una. Primero agregue el oyente en el botón y al usar este botón se moverá a la actividad de inicio.


      button1.setOnClickListener(nueva Vista.OnClickListener() {});

      b. Ahora, crea una intención.


      Intent i = new Intent(getApplicationContext(), OtherActivityName.class);

      Por lo tanto, el código para hacer una intención explícita es:

      Intent i = new Intent(getApplicationContext(), MainActivity.class);
              

      C. Ahora inicie la actividad dirigida.

      startActivity(i): Esto inicia la actividad objetivo.

      El código para mostrar el mensaje Toast:

      Intent i = new Intent(getApplicationContext(), MainActivity.class);
      iniciarActividad(i);

    • Paso 8: Ahora ejecute la aplicación y opere de la siguiente manera:
      cuando se abre la aplicación, muestra el botón «IR A OTRA ACTIVIDAD».
      Haga clic en el botón «IR A OTRA ACTIVIDAD».
      Luego pasará a la segunda actividad.
      Además, obtendrá un botón «IR A LA ACTIVIDAD DE INICIO» en la segunda actividad. Cuando haga clic en esto, pasará a la actividad de inicio.

    Código completo de intención explícita

    actividad_principal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="org.geeksforgeeks.explicit_intent.MainActivity">
      
     <!-- add a button to move to next activity -->
        <Button
            android:id="@+id/Button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/TextView01"
            android:layout_marginTop="209dp"
            android:onClick="onClick"
            android:text="Go To Other Activity"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:ignore="OnClick" />
      
     <!-- add a TextView to write some text on activity -->
        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/Button01"
            android:layout_alignParentTop="true"
            android:layout_marginTop="44dp"
            android:minHeight="60dip"
            android:text="This is First Activity"
            android:textSize="20sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
      
    </android.support.constraint.ConstraintLayout>

    MainActivity.java

    package org.geeksforgeeks.explicit_intent;
      
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
      
    public class MainActivity extends Activity {
        // Defining the object for button
        Button button1;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            // Bind the components to their respective objects
            // by assigning their IDs
            // with the help of findViewById() method
            button1 = (Button)findViewById(R.id.Button01);
      
            button1.setOnClickListener(new OnClickListener() {
                public void onClick(View view)
                {
      
                    // Creating explicit intent
                    Intent i = new Intent(getApplicationContext(),
                                          ActivityTwo.class);
                    startActivity(i);
                }
            });
        }
    }

    actividad_dos.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="org.geeksforgeeks.explicit_intent.ActivityTwo">
      
    <!-- add a button for moving to home activity -->
        <Button
            android:id="@+id/Button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/TextView01"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="220dp"
            android:onClick="onClick"
            android:text="Go to Home Activity"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.533"
            app:layout_constraintStart_toStartOf="parent"
            tools:ignore="OnClick" />
      
     <!-- add a TextView to write some text on activity -->
        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/Button01"
            android:layout_alignParentTop="true"
            android:layout_margin="71dp"
            android:layout_marginTop="144dp"
            android:layout_marginEnd="88dp"
            android:layout_marginRight="88dp"
            android:minHeight="60dip"
            android:text="This is Second Activity"
            android:textSize="20sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
      
    </android.support.constraint.ConstraintLayout>

    ActividadDos.java

    package org.geeksforgeeks.explicit_intent;
      
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
      
    public class ActivityTwo extends Activity {
      
        // Defining the object for button
        Button button1;
        @Override
        public void onCreate(Bundle bundle)
        {
            super.onCreate(bundle);
            setContentView(R.layout.activity_two);
      
            // Bind the components to their respective objects
            // by assigning their IDs
            // with the help of findViewById() method
            button1 = (Button)findViewById(R.id.Button01);
      
            button1.setOnClickListener(new OnClickListener() {
                public void onClick(View view)
                {
      
                    // Creating explicit intent
                    Intent i = new Intent(getApplicationContext(),
                                          MainActivity.class);
                    startActivity(i);
                }
            });
        }
    }

    Producción:

Publicación traducida automáticamente

Artículo escrito por shamikhfaraz y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *