In questo video vogliamo dare uno sguardo più approfondito all'intensità.
Che cos'è un intento?
E l'intento è semplicemente una sorta di oggetto di messaggistica.
Così possiamo interagire con altri componenti di un'applicazione in base a un intento.
Ora abbiamo intenti impliciti ed espliciti.
E la differenza è che è molto semplice.
Implicito significa semplicemente che non si conosce l'applicazione di destinazione a cui si vuole inviare questo
intento.
Sembra assolutamente assurdo, ma non è un comportamento comune.
Ad esempio, supponiamo di voler aprire un programma di posta elettronica.
Quindi abbiamo ottenuto il collegamento e vogliamo avviare un programma di posta elettronica.
Quindi la nostra applicazione sa quale programma di posta elettronica vogliamo utilizzare.
Si tratta dell'email di Outlook o forse di qualche applicazione di terze parti sul nostro dispositivo?
Al momento non lo sappiamo.
Noi inviamo semplicemente questo evento.
Vogliamo aprire subito un'e-mail.
Dateci un'applicazione in grado di gestire questo evento e poi queste applicazioni potranno reagire a questo evento.
Ok.
Quindi implicito significa semplicemente che non sappiamo quale sia l'applicazione di destinazione in questo momento.
Bene, allora abbiamo esplicito e, come avete indovinato, esplicito significa semplicemente che sappiamo esattamente che cosa vogliamo
avviare nel nostro caso, diciamo che abbiamo ottenuto un'attività di registrazione dopo essersi loggati con
successo, non vogliamo avviare un'applicazione casuale.
Vogliamo avviare subito l'attività del profilo in questa applicazione.
Quindi, facendo clic sul pulsante Impostazioni, vogliamo avviare l'attività Impostazioni e poi
c'è anche l'attività Codice.
Quindi, all'interno di un intento esplicito, conosciamo esattamente la destinazione.
Ciò che vogliamo chiamare può essere un'attività all'interno della nostra applicazione o può essere anche un'attività con un'applicazione
completamente diversa.
Questo va benissimo se viene esportato.
Naturalmente.
Va bene.
Ok.
Si tratta di un lavoro che riguarda solo le attività.
No, questo funziona anche con i ricevitori e i servizi di trasmissione, ma non con i fornitori di contenuti.
Ne parleremo più diffusamente in diversi argomenti.
Quindi, all'interno dell'argomento fornitore di contenuti.
Ok.
Per ora sappiamo di avere intenti impliciti ed espliciti e possiamo usare intenti relativi ad attività,
ricevitori di trasmissioni e servizi, anche se non ne abbiamo ancora parlato.
Ma lo faremo in un paio di video.
Vediamo ora alcuni esempi pratici.
Come si presentano e di cosa dobbiamo occuparci?
Ok, iniziamo con gli intenti espliciti.
Se prendiamo la nostra applicazione, abbiamo qui queste quattro attività.
Esplicito significa che conosciamo la destinazione, ciò che vogliamo chiamare, ad esempio, le impostazioni del profilo o il codice.
E per quanto riguarda il codice vero e proprio, assomiglia a questo qui.
Questo è il codice per avviare una nuova attività nella nostra applicazione.
Quindi dobbiamo creare un nuovo oggetto intent e fornire due parametri.
Il primo è il nostro contesto attuale, l'attività di blocco.
Così la nostra fonte.
Il secondo parametro è semplicemente l'indirizzo di destinazione.
In questo caso, si tratta della classe di attività del profilo.
Ciò significa che ora siamo all'interno dell'attività di registrazione.
Quindi, ovviamente, dobbiamo verificare se il nome utente e la password sono stati inseriti.
Corretto.
Ma se questo è il caso, possiamo inserire questo pezzo di codice per andare avanti nella nostra applicazione.
Quindi utilizziamo semplicemente questa attività di avvio e poi forniamo il nostro nuovo oggetto intent, che è stato creato
nella riga precedente.
Questo è il modo per avviare una nuova attività nel nostro sistema Android.
Va bene.
Ok.
Un'ultima cosa da sapere e poi abbiamo già quasi finito il nostro intento.
La conoscenza è che possiamo anche fornire alcune informazioni all'istanza successiva, ad esempio alla classe
di attività del profilo.
Potremmo dire, ad esempio, che stiamo effettuando il login come utente incerto perché queste informazioni o tutte queste
informazioni potrebbero andare perse se iniziamo una nuova attività.
Quindi l'attività corrente viene distrutta e si ha un nuovo contenuto della schermata.
Sì, potremmo memorizzarli in variabili globali, ma questo non è un buon approccio.
Potremmo semplicemente passare le informazioni da un'attività all'altra in base agli intenti.
In questo caso, lo facciamo per il nome utente.
Supponiamo di accedere a questa applicazione come utente admin.
Questo qui.
Ora, nell'attività del profilo, sarebbe bello poter vedere quale utente è collegato in questo momento
e anche i dati del profilo e, naturalmente, i permessi relativi a questo utente.
Possiamo passare queste informazioni in base a un intento e il risultato è il seguente.
Quindi vediamo che stiamo avviando un'attività, ma questa volta con dei parametri.
Abbiamo esattamente le stesse due linee.
Quindi abbiamo il nostro nuovo oggetto intent, abbiamo la nostra fonte, il nostro operatore this e poi abbiamo la classe
di attività del profilo di destinazione.
Ma questa volta abbiamo questo intento in più e possiamo fornire alcuni campi, ad esempio
stringhe, valori booleani, interi e altro ancora.
Qui possiamo vedere che stiamo fornendo un nome utente e un amministratore e poi stiamo avviando questa attività.
Quindi, dopo aver effettuato con successo il login come amministratore, le informazioni sull'amministratore verranno passate dal log.
Attività, attività del profilo intraday.
Che aspetto ha?
Beh, non è così difficile.
È mostrato qui.
Questo è il codice dell'attività del profilo.
E qui possiamo vedere questo.
Questa attività ottiene semplicemente questo intento con la funzione get intent.
E poi possiamo accedere a questi campi tramite intent, get string, extra user name.
Ora possiamo assegnare il nome utente passato dall'attività di registrazione alla variabile locale
della nostra attività profilo.
Va bene.
Perfetto.
Perché questo è tutto ciò che dobbiamo sapere sugli intenti espliciti.
Conosciamo l'indirizzo di destinazione, ciò che vogliamo chiamare e possiamo anche passare alcuni parametri.
Ok.
Parliamo ora degli intenti impliciti, questo qui.
Quindi, con un intento implicito, non conosciamo l'indirizzo di destinazione.
Sembra assolutamente ridicolo, ma questo accade continuamente sui nostri smartphone.
Supponiamo di ricevere un SMS e che questo SMS contenga una stringa May two, come questa
qui.
Se facciamo clic su questo, abbiamo la possibilità di aprire l'applicazione di posta elettronica, ma in questo caso
non sappiamo quale applicazione di posta.
Quindi il sistema sta inviando questo intento.
Ecco quindi che abbiamo questo intento.
Ehi, l'utente vuole aprire un'applicazione di posta elettronica, quale applicazione vuole reagire a questa.
E la nostra applicazione di posta elettronica dice: "Oh, questo... questo mi va benissimo".
Sono un'applicazione di posta elettronica.
Vorrei aprire questo link nella mia applicazione di posta e poi l'applicazione di posta appare sul nostro schermo.
Questa è la storia di un intento implicito.
Sarebbe più chiaro se si parlasse di ricevitori broadcast, perché allora avrebbe assolutamente senso.
Ma non voglio rovinare tutto in questo momento e mescolare tutto insieme.
Va bene.
All'interno di un intento implicito, abbiamo la stessa possibilità di passare alcune informazioni a questa applicazione,
ad esempio, in questo caso, l'indirizzo e-mail.
E questo è un po' un problema, perché questa intenzione implicita può essere, diciamo, trasmessa alle
altre applicazioni, che possono reagire a questa.
Quindi potremmo creare un'applicazione dannosa che ascolti questo tipo di
intensità.
Quindi sta annusando questo sistema, chiamiamolo bus, per ottenere questo tipo di informazioni.
E questo si chiama intent sniffing.
Ciò significa che stiamo usando qualcosa di simile a Wireshark sui nostri intenti e stiamo cercando quali informazioni
vengono passate tra le applicazioni.
Insomma, questo non è un vero e proprio canale sicuro.
Potrebbe essere sicuro se programmato correttamente, ma spesso non è così.
Quindi un intenso sniffing potrebbe essere piuttosto pericoloso se si condividono informazioni segrete tramite questo sistema.
Va bene.
Ok.
Per ultimo, ma non meno importante, abbiamo i nostri filtri di intento e abbiamo completato questo argomento proprio ora.
Che cos'è un filtro d'intento?
Se facciamo clic su questa applicazione, possiamo avviare la nostra attività di lancio.
È per questo che si tratta di un'attività di lancio.
Questi attributi di lancio sono stati definiti da un filtro di intenti.
Quindi, se si dà un'occhiata al nostro manifest XML di Android, si può vedere che abbiamo questo filtro intent e abbiamo
anche questi due tag.
Abbiamo un'azione e un tag di categoria, l'azione ha l'intento principale dell'azione e la categoria ha il lanciatore di
categoria.
Quindi un filtro intent è in realtà solo un filtro per la nostra applicazione Android.
Ci sono molte informazioni che vengono scambiate in continuazione sul nostro sistema di pass, che abbiamo
visto proprio prima della diapositiva.
E questa cifra non fa altro che filtrarli.
In questo esempio, ascoltiamo solo alcuni eventi e l'intento con l'azione principale e il lanciatore di categorie, il che significa
che se facciamo clic sull'icona della nostra applicazione, questo intento verrà attivato e potremo reagire a questo.
Quindi possiamo dire: "Ok, ora la nostra applicazione è stata avviata, reagiamo a questa".
Quindi si limita ad ascoltare continuamente il sistema di autobus e a filtrare le informazioni
relative all'applicazione.
Devo reagire a loro e a tutti gli altri.
Saranno ignorati.
Questo è ciò che fa il filtro intenzionale.
Va bene.
Ok, abbiamo alcuni tag in un filtro di intenti.
Ad esempio, abbiamo l'azione.
Abbiamo anche categorie e dati.
I dati non sono mostrati qui, ma possono essere inclusi in una cartella di intenti.
Va bene.
Qual è la domanda?
Che cosa significano?
E ad essere onesti, questo è assolutamente confuso.
E li cercheremo subito perché continuo a dimenticarli.
Ok.
A tal fine, è sufficiente digitare intent Android developer nel motore di ricerca prescelto per vedere intent
all'interno della documentazione per sviluppatori Android.
Diamo quindi un'occhiata.
Va bene.
E qui possiamo vedere la definizione di intento.
Ne abbiamo già parlato, ma dove possiamo trovare queste categorie in azione?
A destra, si possono vedere le azioni standard per le attività e le azioni standard per i ricevitori broadcast.
Non abbiamo ancora parlato dei ricevitori broadcast, ma possiamo già notare che qui hanno nomi
d'azione diversi.
Non dovete preoccuparvi di questo perché lo farete.
In ogni caso, dovrete cercarli, perché nessuno è in grado di ipnotizzare tutte queste azioni come quelle che possiamo vedere
sulla destra.
È assolutamente ridicolo.
Ma poi si ha una sensazione, ma un'azione va bene.
Diamo quindi un'occhiata qui.
Abbiamo delle azioni, ok?
Se abbiamo delle categorie e qui possiamo vedere i dati standard, esterni o extra.
Questi sono i tre argomenti principali: azioni, categorie e dati.
Diamo un'occhiata alle attività, alle azioni: qui abbiamo l'azione principale e le più importanti
e di gran lunga più utilizzate sono l'azione principale e l'azione.
Edit Vediamo cosa significa azione.
L'avvio come punto di ingresso principale non si aspetta di ricevere dati in ingresso.
Nulla in uscita, nulla a valore costante.
Va bene.
Si tratta semplicemente del punto di ingresso di un'applicazione, come abbiamo già detto in precedenza.
Quindi abbiamo già imparato, senza saperlo, che questa qui è un'azione intenzionale.
Ok, va bene.
Cos'altro abbiamo?
Torniamo indietro.
Forse.
Vediamo.
Azione, chiamata, azione, chiamata.
Quindi vediamo.
Azione, selezione, attività, azione, selezione e numero come specificato dai dati.
Questo mostra un'interfaccia utente con il numero da comporre, consentendo all'utente di istanziare esplicitamente la chiamata.
Quindi si tratta semplicemente di chiamare un numero.
Abbiamo un'azione per questo.
E così, sfogliandoli tutti, forse non è necessario dare un'occhiata a tutti, ma ad alcuni
di essi si può intuire cosa sia questo tipo di azione.
Come già detto, non li memorizzo tutti.
Mi limito a cercarli.
Un'altra cosa molto interessante è il selezionatore di azioni, la visualizzazione delle azioni dell'attività e il selezionatore
di attività, che consente all'utente di scegliere ciò che desidera prima di procedere.
Ma vogliono prima che questo possa essere usato come alternativa al selezionatore di attività standard.
Viene visualizzato dal sistema quando si tenta di avviare un'attività con più possibili corrispondenze.
Quindi a volte si ottiene una schermata.
Volete aprirlo con il browser o, ad esempio, all'interno di una determinata applicazione sul vostro smartphone?
Questo è il selezionatore di azioni.
Abbiamo quindi molte azioni per determinati compiti e, sì, questo è il modo in cui possiamo usarle
o per cosa vengono usate in questo caso.
Va bene, forse.
Diamo un'occhiata alle categorie.
Vediamo, abbiamo un lanciatore di categorie.
Quindi abbiamo già guardato in alto.
Main è semplicemente il punto di ingresso principale e poi abbiamo questo lanciatore di categorie all'interno della nostra cartella intent.
Vediamo quindi dove dovrebbe essere visualizzato nel launcher di primo livello.
Valore costante.
Va bene.
Sembra assolutamente misterioso.
Ciò significa semplicemente che questa attività deve essere visibile nel menu principale.
Quindi, ad esempio, l'icona dell'applicazione dovrebbe trovarsi sullo schermo.
Credo che questo sia il modo in cui possiamo interpretare la frase in questo momento.
Ok.
Quindi la categoria è solo un bonus.
Aggiunge ulteriori informazioni al nostro evento principale, alla nostra azione principale.
Possiamo anche consultarlo nella documentazione e, ad esempio, se torniamo all'intento,
quindi alla pagina iniziale qui e poi vediamo.
Sì.
Abbiamo una panoramica.
Quindi l'azione, l'azione generale da eseguire, come ad esempio l'azione di visualizzazione, di modifica o principale, deve essere ricercata.
Ma si tratta semplicemente di entrare nel punto di ingresso di questa applicazione e di cose del genere.
Poi, abbiamo dei dati che non abbiamo visto finora, ma per i quali abbiamo ottenuto una buona spiegazione.
Ad esempio, potremmo fornire questo contenuto.
Uri, impareremo a conoscere i fornitori di contenuti in un paio di video.
Qui possiamo vedere che possiamo visualizzare le informazioni sulla persona identificata dal record uno, ad
esempio.
Possiamo quindi fornire questo insieme a una vista d'azione e visualizzare queste informazioni.
Va bene.
Ma vogliamo cercare le categorie.
Quindi, la categoria qui sopra fornisce informazioni aggiuntive sull'azione da eseguire, ad esempio, il lancio della categoria.
Ciò significa che dovrebbe apparire nel launcher come applicazione di primo livello.
Abbiamo già parlato di questo aspetto con mezzi alternativi alla categoria.
Dovrebbe essere inclusa in un elenco di azioni alternative che l'utente può eseguire su un dato.
Qualunque cosa significhi, dobbiamo scendere nella tana del coniglio e capire tutto.
Quindi questa descrizione non è molto utile in questo momento.
Ma noi entriamo in azione con sentimento.
È l'azione.
Quello che vogliamo fare nella categoria sono informazioni aggiuntive e assemblaggio di dati.
Solo sì.
Un dato che può essere fornito al nostro intento.
Va bene.
Ok.
Credo che questo sia tutto ciò che dobbiamo sapere.
Nel prossimo video faremo alcuni esempi pratici su come interagire con intense, come fornire determinati
dati e cose del genere.
Quindi, dopo la parte teorica, c'è anche un esercizio pratico che facciamo insieme in questo momento.
Quindi non vedo l'ora di vedervi lì.