Qual è lo scopo di "android.intent.category.DEFAULT"?


104

Qual è lo scopo dell'utilizzo android.intent.category.DEFAULTnel campo Categoria dei filtri di intenti?


2
Stai dicendo che questo è il punto di ingresso predefinito per la tua applicazione. Vedi: developer.android.com/reference/android/content/…
Blundell

@Blundell: quindi se arriva un intento implicito, verrà chiamata un'attività con default come categoria nel filtro dell'intento?
Pravy

1
Credo che sia usato per implicare che questa sia l'attività da usare sì "è per l'uso nei filtri di intenti specificati nei pacchetti"
Blundell

se più di un'attività contiene default come categoria, nei rispettivi filtri di intento quale attività verrà chiamata?
Pravy

Se hanno filtri di intenti diversi, dipenderà dall'intento.
Blundell

Risposte:


112

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! "


27
Questa era in realtà una spiegazione comprensibile. Confronta questa risposta con la documentazione: "Imposta se l'attività deve essere un'opzione per l'azione predefinita (pressione centrale) da eseguire su un dato. L'impostazione di questa opzione nasconderà all'utente qualsiasi attività senza che sia impostata quando si esegue un'azione su alcuni data "Quanto può essere difficile scrivere una descrizione comprensibile ...
Andreas

Non sono sicuro del suo mandato, poiché sembra essere facoltativo poiché un'attività senza alcun filtro di intento potrebbe ancora essere chiamata come attività implicita
humblerookie

6
La documentazione è ora più chiara IMO: Android applica automaticamente la categoria CATEGORY_DEFAULT a tutti gli intenti impliciti passati a startActivity () e startActivityForResult (). Pertanto, se desideri che la tua attività riceva intenti impliciti, deve includere una categoria per "android.intent.category.DEFAULT" nei filtri di intenti.
shkschneider

2
@humblerookie. L'ho provato e non funziona senza la categoria DEFAULT. Se non mi credi, prova tu stesso.
Bob Ueland

2
Se solo tutti i tutorial fossero scritti in questo modo. Perché usiamo ancora il linguaggio del legno nel 2018?
SudoPlz

24

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.)


@Comptrol, la tua risposta non è più sotto. Sta aumentando. :-)
Ellen Spertus

Sì, ma l'ho riportato allo stato in cui era. Quindi non ho cambiato nulla, in generale.
Özgür

1
Trovo questa risposta più utile per i miei filtri di intenti di comprensione della situazione attuale. grazie.
Neon Warge

1

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.


3
Dovresti sforzarti di fornire riferimenti per i tuoi reclami. "non citarmi se è sbagliato" non ti consente di ignorare questa regola.
verybadalloc

Il riferimento che ho è un progetto su cui ho lavorato mentre studiavo la codifica Android. Se vuoi i file sorgente, sarò felice di inviarli.
CHT

1

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à.


0

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.


1
Se guardi l'esempio del Blocco note Android, tutte le attività sono contrassegnate come predefinite: developer.android.com/reference/android/content/Intent.html
Peter Ajtai

0

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à.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.