Intent e navigazione
Navigare tra le Activity con Intent espliciti, passare dati con putExtra/getExtra e avviare app esterne con Intent impliciti.
Intent e navigazione è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 5 di 7. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 7 lezioni in totale.
Che cos'è un Intent?
Un Intent è un messaggio che indica ad Android di eseguire un'azione:
- Explicit Intent — avvia una Activity specifica dell'app
- Implicit Intent — chiede ad Android di trovare un'app in grado di gestire l'azione (aprire un URL, chiamare un numero, condividere del testo)
Gli Intent sono il modo principale con cui le Activity comunicano tra loro.
Explicit Intent: apertura di una schermata
Avviare un'altra Activity nell'app:
// In your button click listener:
binding.btnGoToDetail.setOnClickListener {
val intent = Intent(this, DetailActivity::class.java)
startActivity(intent)
}
// To also close the current screen after navigating:
binding.btnLogin.setOnClickListener {
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
finish() // removes LoginActivity from back stack
}Passaggio di dati con gli extra
Utilizzi gli extra per passare dati alla Activity successiva:
intent.putExtra("key", value)— allega i datiintent.getStringExtra("key")— recupera una Stringintent.getIntExtra("key", defaultValue)— recupera un Int
Utilizzi costanti per le chiavi, così da evitare errori di battitura.
Passaggio e ricezione degli extra
Inviare dati da una Activity e leggerli in quella successiva:
// Sending Activity:
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("PRODUCT_ID", 42)
intent.putExtra("PRODUCT_NAME", "Laptop")
startActivity(intent)
// DetailActivity — receiving:
class DetailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
val id = intent.getIntExtra("PRODUCT_ID", -1)
val name = intent.getStringExtra("PRODUCT_NAME") ?: ""
// Use id and name to load data
}
}Implicit Intent
Gli Implicit Intent consentono all'app di utilizzare funzionalità di altre app installate senza sapere quale app gestirà l'azione:
- Aprire un URL web nel browser
- Comporre un numero di telefono
- Inviare un'e-mail
- Condividere testo con qualsiasi app
Android mostra un selettore se più app possono gestire l'Intent.
Implicit Intent comuni
Avviare azioni di sistema con gli Implicit Intent:
import android.content.Intent
import android.net.Uri
// Open a web page
val webIntent = Intent(Intent.ACTION_VIEW,
Uri.parse("https://developer.android.com"))
startActivity(webIntent)
// Dial a phone number
val dialIntent = Intent(Intent.ACTION_DIAL,
Uri.parse("tel:+15551234567"))
startActivity(dialIntent)
// Share text
val shareIntent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "Check out this app!")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))Ottenere i risultati
Quando è necessario ottenere un risultato da un'altra schermata (ad esempio, un selettore di immagini o un modulo), utilizzi l'Activity Result API:
- Registri un launcher con
registerForActivityResult - Lo avvii quando necessario
- Gestisca il risultato in un callback
Questo sostituisce il vecchio schema startActivityForResult / onActivityResult.
Esempio di Result API
Richiedere una foto dalla galleria e riceverla:
import androidx.activity.result.contract.ActivityResultContracts
class MainActivity : AppCompatActivity() {
private val pickImage = registerForActivityResult(
ActivityResultContracts.GetContent()
) { uri ->
// 'uri' is the selected image URI, or null if cancelled
if (uri != null) {
binding.ivPhoto.setImageURI(uri)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
binding.btnPickPhoto.setOnClickListener {
pickImage.launch("image/*")
}
}
}Deep link
Un deep link è un URL che apre direttamente una schermata specifica dell'app, utile per le notifiche push e i link di marketing.
Dichiari i deep link in AndroidManifest.xml usando intent-filter con un tag data che specifichi lo schema e l'host dell'URL.
Verifica rapida
Quale tipo di Intent utilizzerebbe per aprire un sito web nel browser dell'utente?
Riepilogo: Intent e navigazione
Ora può navigare tra le schermate e avviare funzionalità di sistema:
- Explicit Intent — avvia una Activity specifica dell'app
putExtra/getExtra— passano dati tra le Activity- Implicit Intent — apre URL, compone numeri e condivide contenuti
- Activity Result API — riceve dati da un'altra Activity
Prossimo argomento: visualizzare elenchi dinamici con RecyclerView.
Domande Frequenti
La lezione «Intent e navigazione» è gratuita?
Sì — il testo completo di «Intent e navigazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 7 lezioni in totale.
Cosa imparerò in «Intent e navigazione»?
Navigare tra le Activity con Intent espliciti, passare dati con putExtra/getExtra e avviare app esterne con Intent impliciti. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 5 di 7.
Quanto tempo richiede la lezione «Intent e navigazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Struttura del progetto e manifest
- Activity e ciclo di vita
- Layout e viste
- Gestione dell'input dell'utente
- Intent e navigazione
- Fragment
- Autorizzazioni e richieste a runtime