Els intents són una part fonamental del desenvolupament d'aplicacions Android. Són utilitzats per iniciar activitats, serveis i enviar difusions. En aquest tema, aprendrem què són els intents, els seus tipus i com utilitzar-los per comunicar-nos entre diferents components de l'aplicació.
Què és un Intent?
Un Intent és un objecte que proporciona una vinculació en temps d'execució entre components diferents, com ara activitats, serveis i receptors de difusió. Els intents poden ser utilitzats per:
- Iniciar una nova activitat.
- Iniciar un servei.
- Enviar una difusió.
Tipus d'Intents
Hi ha dos tipus principals d'intents:
- Intents Explícits: S'utilitzen per iniciar un component específic dins de la mateixa aplicació. Es defineix el component destinatari de manera explícita.
- Intents Implícits: S'utilitzen per iniciar un component que pot pertànyer a una altra aplicació. No es defineix el component destinatari de manera explícita, sinó que es descriu l'acció a realitzar.
Intents Explícits
Els intents explícits són utilitzats quan es coneix el component destinatari. Per exemple, per iniciar una nova activitat dins de la mateixa aplicació:
Intents Implícits
Els intents implícits són utilitzats quan no es coneix el component destinatari. En lloc d'això, es descriu l'acció que es vol realitzar. Per exemple, per obrir una pàgina web:
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.example.com")); startActivity(intent);
Components d'un Intent
Un intent pot contenir diverses dades, incloent:
- Acció: Una cadena que especifica l'acció a realitzar, com
ACTION_VIEW
,ACTION_SEND
, etc. - Dades: Un URI que especifica les dades a operar, com una URL.
- Categories: Informació addicional sobre l'acció que es vol realitzar.
- Extra: Dades addicionals que es poden passar a través d'un
Bundle
.
Exemple Pràctic: Iniciar una Activitat amb un Intent Explícit
A continuació, es mostra un exemple pràctic de com iniciar una nova activitat utilitzant un intent explícit:
Activitat Principal (MainActivity.java)
package com.example.myapp; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); } }
Segona Activitat (SecondActivity.java)
package com.example.myapp; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }
Layout de l'Activitat Principal (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Iniciar Segona Activitat" /> </LinearLayout>
Exercici Pràctic
Objectiu
Crea una aplicació que tingui dues activitats. La primera activitat ha de tenir un botó que, en ser premut, iniciï la segona activitat i li passi un missatge.
Passos
- Crea un nou projecte a Android Studio.
- Afegeix dues activitats:
MainActivity
iSecondActivity
. - A
MainActivity
, afegeix un botó que, en ser premut, iniciïSecondActivity
i li passi un missatge utilitzant un intent explícit. - A
SecondActivity
, mostra el missatge rebut en unTextView
.
Solució
MainActivity.java
package com.example.myapp; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("EXTRA_MESSAGE", "Hola, Segona Activitat!"); startActivity(intent); } }); } }
SecondActivity.java
package com.example.myapp; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); TextView textView = findViewById(R.id.textView); String message = getIntent().getStringExtra("EXTRA_MESSAGE"); textView.setText(message); } }
Layout de l'Activitat Principal (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Iniciar Segona Activitat" /> </LinearLayout>
Layout de la Segona Activitat (activity_second.xml)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Missatge Rebut" /> </LinearLayout>
Conclusió
En aquest tema, hem après què són els intents, els seus tipus i com utilitzar-los per comunicar-nos entre diferents components de l'aplicació. Hem vist exemples pràctics d'intents explícits i implícits, i hem realitzat un exercici pràctic per reforçar els conceptes apresos. En el proper tema, explorarem com treballar amb fragments per crear interfícies d'usuari més flexibles i modulars.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment