Qual è lo scopo dell'utilizzo android.intent.category.DEFAULT
nel campo Categoria dei filtri di intenti?
Qual è lo scopo dell'utilizzo android.intent.category.DEFAULT
nel campo Categoria dei filtri di intenti?
Risposte:
Le categorie vengono utilizzate per gli Intenti impliciti. Quindi, se la tua attività può essere avviata da un intento implicito quando nessun'altra categoria specifica è assegnata all'attività, il filtro Intento dell'attività dovrebbe includere questa categoria. (anche se hai altre categorie nel filtro Intento). Se sei sicuro che la tua attività deve essere chiamata con qualsiasi altra categoria, non utilizzare l'impostazione predefinita.
L'impostazione di Categoria su Predefinito non significa che questa attività verrà utilizzata per impostazione predefinita all'avvio dell'app. L'attività dice solo al sistema che " Oh, potrei essere avviato, anche se la categoria Intento iniziale è impostata su Niente affatto! "
Questa categoria viene utilizzata principalmente per intenti impliciti. Se la tua attività desidera essere avviata con un intento implicito, dovrebbe includere questa categoria nel suo filtro.
Penso che il termine "predefinito" dovrebbe essere inteso come " candidato predefinito ". Se l'azione su un dato si risolve in più attività, Android presenterà tutti i candidati all'utente e l'utente potrà selezionare il suo valore predefinito preferito.
Riferimento:
http://developer.android.com/guide/components/intents-filters.html
Estratto da quella pagina:
Android considera tutti gli intent impliciti passati aostartActivity () come se contenessero almeno una categoria: "android.intent.category.DEFAULT" (la costante CATEGORY_DEFAULT). Pertanto, le attività che desiderano ricevere gli intenti impliciti devono includere "android.intent.category.DEFAULT" nei filtri degli intenti. (I filtri con le impostazioni "android.intent.action.MAIN" e "android.intent.category.LAUNCHER" sono l'eccezione. Contrassegnano le attività che iniziano nuove attività e che sono rappresentate nella schermata di avvio. Possono includere "android.intent .category.DEFAULT "nell'elenco delle categorie, ma non è necessario.)
In realtà è per assicurarti che le tue altre attività possano essere richiamate quando l'app è in esecuzione. LAUNCHER renderà l'attività che lo possiede la prima attività che inizia. Per utilizzare gli intenti per accedere alle altre attività, devono essere elencate come attività "effettive" inserendo DEFAULT. Questo è da quello che so quindi non citarmi se è sbagliato.
Le attività dovranno supportare CATEGORY_DEFAULT in modo che possano essere trovate da Context.startActivity ().
Per ricevere gli intenti impliciti, è necessario includere la categoria CATEGORY_DEFAULT nel filtro degli intenti. I metodi startActivity () e startActivityForResult () trattano tutti gli intenti come se dichiarassero la categoria CATEGORY_DEFAULT. Se non lo dichiariamo nel nostro filtro di intenti, nessun intento implicito si risolverà nella nostra attività.
Viene utilizzato per dichiarare alcune operazioni come azioni predefinite (come suggerisce il nome). Consideriamo che abbiamo un'app di blocco note (facendo riferimento all'esempio di blocco note Android). La prima pagina dell'app è costituita da un elenco di tutti i file del blocco note. Quando si seleziona un file di blocco note, è possibile eseguire una delle operazioni come modifica nota, elimina nota ecc. Ma voglio fare la modifica come azione predefinita, il che significa che quando premo il pulsante centrale della mia tastiera, la finestra di modifica dovrebbe essere aperta.
https://developer.android.com/guide/components/intents-filters
Per ricevere gli intenti impliciti, è necessario includere la categoria CATEGORY_DEFAULT nel filtro degli intenti. I metodi startActivity () e startActivityForResult () trattano tutti gli intenti come se dichiarassero la categoria CATEGORY_DEFAULT. Se non dichiari questa categoria nel filtro degli intenti, nessun intento implicito si risolverà nella tua attività.
categoria:
android.intent.category.DEFAULT
Corrisponde a qualsiasi intento implicito. Questa categoria deve essere inclusa affinché la tua attività riceva qualsiasi Intento implicito.