Azioni e deep link
Aggiunga pulsanti e apra la schermata corretta.
Azioni e deep link è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. 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 4 lezioni in totale.
Azioni e deep link
Le notifiche diventano utili quando eseguono un'azione. Toccandone una si dovrebbe aprire la schermata corretta, mentre i pulsanti di azione dovrebbero eseguire attività rapide. Entrambe le funzioni si basano su PendingIntent.
Che cos'è un PendingIntent
Un PendingIntent è un token che consegnate al sistema e che gli consente di eseguire in seguito un Intent per vostro conto, anche quando la vostra app non è in esecuzione. Le notifiche lo usano per avviare la vostra activity.
Creazione di un PendingIntent per il contenuto
Create un Intent per la schermata da aprire, racchiudetelo in un PendingIntent e collegatelo con setContentIntent, in modo che un tocco apra quella schermata.
val intent = Intent(context, MainActivity::class.java)
val pending = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_IMMUTABLE
)
builder.setContentIntent(pending).setAutoCancel(true)Il flag di mutabilità
A partire da Android 12, un PendingIntent deve specificare FLAG_IMMUTABLE o FLAG_MUTABLE. Preferite FLAG_IMMUTABLE, a meno che il sistema non debba inserire dei dati, come nel caso di alcune risposte.
Aggiunta di un pulsante di azione
Usate addAction con un'icona, un'etichetta e un PendingIntent per aggiungere alla notifica un pulsante selezionabile, ad esempio "Rispondi" o "Segna come letto".
builder.addAction(
R.drawable.ic_reply,
"Reply",
replyPendingIntent
)Le azioni attivano componenti
Il PendingIntent di un'azione può avere come destinazione un'Activity, un Service o un BroadcastReceiver. Un pulsante "Segna come letto" spesso ha come destinazione un receiver, così funziona senza aprire alcuna schermata.
val markIntent = Intent(context, MarkReadReceiver::class.java)
val markPending = PendingIntent.getBroadcast(
context, 0, markIntent, PendingIntent.FLAG_IMMUTABLE
)Deep linking a una schermata
Un deep link apre una destinazione specifica all'interno della vostra app, non soltanto la schermata iniziale. Con Navigation Compose potete creare un PendingIntent che porta a una route precisa.
Creazione di un PendingIntent per un deep link
Il componente Navigation offre NavDeepLinkBuilder (oppure un Intent di deep link con un URI) per creare un PendingIntent indirizzato a una destinazione e ai relativi argomenti.
val deepLinkPending = NavDeepLinkBuilder(context)
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.chatScreen)
.setArguments(bundleOf("chatId" to "42"))
.createPendingIntent()Deep link basati su URI
Potete anche registrare uno schema URI nel vostro grafo di navigazione e creare un Intent con quell'Uri. Toccando la notifica, la navigazione porta direttamente alla schermata corrispondente.
val intent = Intent(
Intent.ACTION_VIEW,
"myapp://chat/42".toUri(),
context, MainActivity::class.java
)Mantenimento del back stack
Per i deep link, assicuratevi che il back stack sia sensato, in modo che premendo Indietro si torni a una schermata padre invece di uscire dall'app. TaskStackBuilder o il builder per i deep link di Navigation gestisce questo aspetto.
Codici di richiesta univoci
Se create più PendingIntent diversi, assegnate a ciascuno un codice di richiesta distinto, ovvero il secondo argomento. Intent identici con lo stesso codice vengono trattati come lo stesso PendingIntent.
Verifica rapida
Verificate la vostra comprensione delle azioni e dei deep link.
Riepilogo
Avete aggiunto l'interattività:
PendingIntentconsente al sistema di agire per vostro conto; usateFLAG_IMMUTABLEsetContentIntentdefinisce l'azione eseguita al toccoaddActionaggiunge pulsanti con destinazione verso activity, service o receiver- I deep link aprono schermate precise mantenendo il back stack
Prossimo argomento: l'autorizzazione di runtime per le notifiche.
Domande Frequenti
La lezione «Azioni e deep link» è gratuita?
Sì — il testo completo di «Azioni e deep link» è 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 4 lezioni in totale.
Cosa imparerò in «Azioni e deep link»?
Aggiunga pulsanti e apra la schermata corretta. 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 3 di 4.
Quanto tempo richiede la lezione «Azioni e deep link»?
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.