2013-12-12 4 views
8

Voglio creare un'attività ma non è necessario dichiararlo nel file manifest. È possibile? Ovunque ho visto sembra che ogni attività debba essere dichiarata nel manifest, tuttavia noto che alcune attività, come la ChooserActivity incorporata, non sono dichiarate nel file manifest.Devo dichiarare ogni attività in un file manifest?

+0

ChooserActivity è dichiarato in un altro file manifest e reso pubblico all'applicazione. Quali sono i tuoi obiettivi per non metterlo nel manifesto che potrebbe aiutarmi a rispondere alla tua domanda. – sgarman

+0

Xamarin.Android esegue automaticamente gli attributi (è come le annotazioni in Java). Probabilmente si può creare uno strumento che lo farà anche in Java. –

risposta

13

Risposta breve: sì, tutte le attività nell'applicazione devono essere dichiarate nel manifest. Come descritto nella documentazione di Android, lo scopo del manifesto (tra le altre cose) è:

Descrive i componenti dell'applicazione - le attività, i servizi, riceventi per la radiodiffusione, e fornitori di contenuti che l'applicazione è composta di. Denomina le classi che implementano ogni dei componenti e pubblica le loro capacità (ad esempio, quali messaggi di intenti possono essere gestiti da ). Queste dichiarazioni lasciare che il sistema Android sa cosa i componenti sono e in quali condizioni essi possono essere lanciati.)

http://developer.android.com/guide/topics/manifest/manifest-intro.html#ifs

Pertanto, qualsiasi Classe di attività nell'applicazione deve essere definiti nel manifesto. Lo stesso vale per Intents, Services ecc. Anche se tali componenti non sono accessibili dall'esterno della tua applicazione.

Come per ChooserActivity e qualsiasi altra attività che non è stata definita nel codice, avranno le loro definizioni in un altro Manifesto. Se per qualsiasi ragione decidi di sottocludere un'attività esistente al di fuori della tua applicazione, dovrai definirla anche nel tuo Manifest.

+1

Da qualcuno nuovo ad Android, da un punto di progettazione, questo non ha assolutamente senso! Non puoi definire attività che non si trovano nel manifest e non puoi avere voci manifest che non sono nel tuo codice, quindi perché il compilatore non può gestirlo per te? Lascia il manifest per le eccezioni alla configurazione di default e fai compilare il compilatore per il resto! Perché ci fanno fare? ... a meno che la mia comprensione non sia corretta e mi manchi qualcosa, in tal caso, per favore, condividilo in modo che io possa imparare, perché così com'è ora, sembra solo un lavoro noioso e inutile! – MarqueIV

+0

Nota, ovviamente mi riferisco alle Attività che I * definiscono nella mia app *, non a quelle che sono disponibili per l'uso nella mia app (ad esempio le attività fornite dal sistema, ecc.) Se hai definito la classe, sei responsabile di aggiungerla al manifest e il manifest è solo per quelle attività che definisci, non quelle esterne, quindi ancora una volta, perché non può essere dedotto dal compilatore per quelle che non richiedono una configurazione esplicita? Heck, aggiungi un 'ImplicitActivity' per definire i valori di default per quelli che non sono specificati. – MarqueIV

+0

Potrebbe esserci qualche merito alla tua argomentazione. Comunque considera che 1) Hanno una versione precedente di toolchain e OS per supportare 2) Ci possono essere attività/servizi/ricevitori broadcast/etc nel tuo progetto o librerie che importi che non vuoi che l'applicazione avvii/faccia uso di (ad es. un'attività di base o AppCompatActivity) 3) Non sono sicuro di quanto sia utile una configurazione di default per questi componenti, dato che ogni componente è solitamente personalizzato comunque, con un titolo, un'icona, filtri di intent, tema, modalità di avvio, meta-dati ecc. 4) Potrebbero esserci altri argomenti o limiti – TheIT

9

Voglio creare un'attività ma non è necessario dichiararlo nel file manifest. È possibile?

No, mi dispiace.

Ho notato che alcune attività, come ad esempio il built-in ChooserActivity, non è dichiarata nel mio file manifesto

Tale attività non è parte della vostra applicazione. Fa parte del sistema operativo principale.