2011-09-09 11 views
21

Qualcuno potrebbe spiegarmi lo scopo delle categorie Intent? Quando dovrei fare da solo e così via? L'unica cosa che è scritta sulle categorie Intent nel mio libro è che possono raggruppare gli intenti ?.Quali sono gli scopi delle categorie di intenti?

+0

offTopic: possiamo categorie nome dell'applicazione in base alle categorie di intenti in Android –

risposta

33

Le sole categorie sono inutili, vengono utilizzate per descrivere un possibile target per un "implicit intent" in un intent-filter.

Quando si conosce la classe/attività che si desidera avviare e utilizzare startActivity() o startActivityForResult(), viene chiamato "intent esplicito".

Ecco un'analogia di come intenti impliciti funzionano:

Immaginate tutte le applicazioni che si siedono in una grande stanza e non fare nulla. Quindi, un'altra applicazione, ad esempio Dropbox, ha bisogno di qualcuno per aprire un file PDF . L'app Dropbox va al sistema e dice "Ehi, qualcuno deve aprire questo file PDF ..." (Questo sta inviando l'intento implicito).

Il sistema ora va nella stanza e urla "Quale di voi può visualizzare un file PDF?". Le applicazioni in grado di stare in piedi e il sistema li vede (queste applicazioni hanno un'attività con una categoria di intenti corrispondente).

E allora, ti offre una finestra di dialogo, in cui è possibile scegliere una delle applicazioni : Complete action using


Se si vuole fare un po 'della vostra attività/BroadcastReceivers/servizi al di fuori disponibili delle applicazioni limiti, è possibile utilizzare il manifest Android per dichiarare un "filtro di intent" ad esso, in modo che venga aperto quando il sistema o un'app lanciano un "intent implicito" corrispondente.

A tale scopo (per esempio) per l'attività che dovrebbe essere aperto dal programma di avvio:

<activity android:name=".SomeActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Questa ascolta il ACTION_MAIN -action innescato da Androids Launcher (CATEGORY_LAUNCHER).

Hai due bambini-elementi del "filtro intento":

  1. Il action. Specifica quale azione il "filtro intent" dovrebbe ascoltare .
  2. Uno o più category s. Specifica, come deve essere chiamata l'attività .

Uno dei category s può essere (per esempio) android.intent.category.DEFAULT, che racconta l'attività per essere lanciato normalmente in full-screen-mode. La categoria android.intent.category.TAB dichiara ad esempio questa attività come una scheda in un TabActivity, quindi può essere aperta solo come una scheda.

Un altro esempio potrebbe essere l'aggiunta della categoria android.intent.category.PREFERENCE, che dichiarerebbe l'attività come Impostazioni-Attività.


Dichiarare i propri category s non è né possibile né necessario.

Ulteriore altro è necessario capire che tali eventi sono attivati ​​dal sistema/un'altra app e si può solo specificare se e come si desidera reagire quando vengono attivati.

+0

Hai dimenticato di menzionare CATEGORY_DEFAULT che è necessario per abbinare un intento basato su uno schema di dati uri/modello di host. –

Problemi correlati