Was ist der Zweck der Absicht Kategorien?

Könnte jemand mir bitte den Zweck der Intent Kategorien erklären? Wann soll ich mein eigenes und so weiter machen? Das einzige, was geschrieben ist über Intent Kategorien in meinem Buch ist, dass sie Gruppen intents ?.

  • Übergeben von Werten durch Bündel und erhalten ihren Wert auf eine andere Aktivität
  • Intent.EXTRA_EMAIL, das das Feld "An" nicht belegt
  • StartActivityForResult und Intents Extras, es scheint, dass Extras nicht zurückgeschoben werden
  • Android - Intent verwalten. Alte Absicht wird zurückgesendet, wenn Benutzer die Anwendung von Task-Manager öffnen
  • Google Plus-Seite öffnen Über Intent In Android
  • Absichtsdaten, die nicht gelöscht werden, wenn der Benutzer die Taste zurückdrückt, dann die letzte App-Taste
  • Transparente Statusleiste - vor Android 4.4 (KitKat)
  • Android 2.2 Webview verursacht OpenGL ES API ohne aktuellen Kontext (einmal pro Thread protokolliert)
  • Wie entfernen Sie Padding um Tasten in Android?
  • ADB über drahtlos
  • Wie kann ich einen Alert-Dialog nur beim ersten Lauf meiner Anwendung anzeigen?
  • JmDNS: Dienst kann nicht aufgelöst werden
  • One Solution collect form web for “Was ist der Zweck der Absicht Kategorien?”

    Die Kategorie allein ist nutzlos, sie werden verwendet, um ein mögliches Ziel für eine "implizite Absicht" in einem intent-filter .

    Wenn Sie wissen, welche Klasse / Aktivität Sie starten möchten, verwenden Sie startActivity() oder startActivityForResult() , es heißt "explizite Absicht".

    Hier ist eine Analogie dafür, wie implizite Intentionen arbeiten:

    Stellen Sie sich alle Ihre Anwendungen sitzen in einem großen Raum und nichts zu tun. Dann, eine andere Anwendung, sagen wir Dropbox, braucht jemand, um eine PDF-Datei zu öffnen. Die Dropbox App geht an das System und sagt: "Hey, jemand muss diese PDF-Datei öffnen …" (Das schickt die implizite Absicht).

    Das System geht jetzt in den Raum und schreit: "Welcher von euch kann eine PDF-Datei anzeigen?". Die Anwendungen, die aufstehen können und das System sieht sie (diese Anwendungen haben eine Aktivität mit einer passenden Absicht Kategorie).

    Es gibt Ihnen dann einen Dialog, in dem Sie eine der Anwendungen auswählen können: Aktion zu Ende führen


    Wenn Sie einige Ihrer Aktivitäten / BroadcastReceivers / Services außerhalb Ihrer Anwendungsgrenzen zur Verfügung stellen möchten, können Sie das Android Manifest verwenden, um einen "Absichtsfilter" zu deklarieren, damit es geöffnet wird, wenn das System oder eine App ein "implizites" startet Absicht "das entspricht.

    Sie tun dies (zB) für die Aktivität, die vom Launcher geöffnet werden soll:

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

    Dies hört die von Androids Launcher ( CATEGORY_LAUNCHER ) ausgelöste ACTION_MAIN Aktion auf.

    Sie haben zwei Kind-Elemente in Ihrem "Absichtsfilter":

    1. Die action . Hier legen Sie fest, welche Aktion der "Intent-Filter" zu hören hat.
    2. Eine oder mehrere category s. Hier legen Sie fest, wie die Aktivität aufgerufen werden soll.

    Eine der category s kann (zB) android.intent.category.DEFAULT , die die Aktivität in der Vollbild-Modus normal starten lässt. Die android.intent.category.TAB zum Beispiel deklariert diese Aktivität als Tab in einer TabActivity , so dass sie nur als Tab geöffnet werden kann.

    Ein anderes Beispiel wäre das Hinzufügen der android.intent.category.PREFERENCE -Kategorie, die die Aktivität als Ihre Einstellungen-Aktivität deklarieren würde.


    Die Deklaration Ihrer eigenen category ist weder möglich noch notwendig.

    Weiterhin müssen Sie verstehen, dass diese Ereignisse vom System / einer anderen App ausgelöst werden und Sie können nur angeben, ob und wie Sie reagieren wollen, wenn sie ausgelöst werden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.