Was bedeutet android.intent.action.MAIN?

Lesezeit: 4 Minuten

Ich habe so viele verschiedene verwirrende Erklärungen gesehen.

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

Was ist die Bedeutung von

<action android:name="android.intent.action.MAIN" />

und

 <category android:name="android.intent.category.LAUNCHER" />

und

 <category android:name="android.intent.category.DEFAULT" />

Was bedeutet androidintentactionMAIN
CommonsWare

ACTION_MAIN gilt als Einstiegspunkt für die Anwendung. Normalerweise verbindet es sich mit CATEGORY_LAUNCHER in einem (n <intent-filter> um eine Aktivität anzuzeigen, die im Launcher des Startbildschirms oder in irgendetwas anderem, das sich selbst als Launcher betrachtet, erscheinen soll. Solche “Werfer” können abfragen PackageManagerverwenden queryIntentActivities()um solche Aktivitäten zu finden und dem Benutzer anzuzeigen.

Aber, ACTION_MAIN kann in Kombination mit anderen Kategorien für andere spezielle Zwecke verwendet werden. Zum Beispiel, CATEGORY_CAR_DOCK mit ACTION_MAIN zeigt eine Aktivität an, die als Kandidat angesehen werden sollte, der angezeigt werden soll, wenn der Benutzer sein Telefon in ein vom Hersteller bereitgestelltes Autodock legt.

Wenn ein Intent wird mit verwendet startActivity()wenn die Intent nicht bereits in eine Kategorie eingeordnet ist, in die es eingeordnet ist CATEGORY_DEFAULT. Daher ein <activity> <intent-filter> angeben muss etwas <category>verwenden <category android:name="android.intent.category.DEFAULT" /> wenn sonst nichts.

  • positiv bewertet! Ich wusste, dass Sie darauf antworten werden, und ich habe darauf gewartet, wie erwartet eine klare und prägnante Antwort zu lesen. Danke

    – Spurdow

    9. August 2014 um 14:49 Uhr


  • Uhm, du hast immer noch nicht erklärt, warum wir beides brauchen. Ich meine, ACTION MAIN = ENTRY POINT, verstanden. CATEGORY_LAUCHER = Um anzuzeigen, dass eine Aktivität im Launcher des Startbildschirms erscheinen soll. Diese beiden Sätze sind gleich, nur anders formuliert, nicht wahr?

    – franklot

    8. Dezember 2015 um 4:16 Uhr


  • @feresr: Nein, sind sie nicht. Sie können das erkennen, indem Sie die Antwort lesen, einschließlich des zweiten Absatzes, der ein Beispiel für a enthält unterschiedlich Gebrauch von ACTION_MAIN das tut nicht beinhalten einen Launcher im Stil eines Startbildschirms.

    – CommonsWare

    8. Dezember 2015 um 12:09 Uhr

  • @vgokul129: Weil Startbildschirm-Launcher speziell nach Aktivitäten suchen, die eine haben <intent-filter> mit beiden <action android:name="android.intent.action.MAIN" /> und <category android:name="android.intent.category.LAUNCHER" />.

    – CommonsWare

    9. Dezember 2017 um 20:39 Uhr


  • @vgokul129: “Um genau zu sein, sollte beim Klicken auf das Symbol im Startprogramm keine startActivity (Absicht) aufrufen” – nur wenn Sie Ihren eigenen Startbildschirm mit Ihrem eigenen Startprogramm schreiben, das diese Art von Funktion bietet. Das Verhalten eines Startbildschirm-Startprogramms hängt von den Implementierern dieses Startbildschirms ab. Die meisten konzentrieren sich darauf, beworbene startbare Aktivitäten zu starten, da dies die Hauptaufgabe eines Launchers ist. Sie können gerne eine Aktivität haben, die ruft finish() sofort, aber die Benutzer werden denken, dass Ihre App kaputt ist.

    – CommonsWare

    9. Dezember 2017 um 22:31 Uhr


Was bedeutet androidintentactionMAIN
Lal

android.intent.action.MAIN bedeutet, dass diese Aktivität der Einstiegspunkt der Anwendung ist, dh wenn Sie die Anwendung starten, wird diese Aktivität erstellt.

Von dem Dokumente

ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.

Auch von Hier

Aktivität Aktion Start als Haupteinstiegspunkt, erwartet keinen Datenempfang.

android.intent.category.DEFAULT wird hauptsächlich für implizite Absichten verwendet. Wenn Ihre Aktivität durch eine implizite Absicht gestartet werden soll, sollte sie diese Kategorie in ihren Filter aufnehmen. Wenn Ihre Aktivität möglicherweise durch eine implizite Absicht gestartet wird, wenn ihr keine bestimmte Kategorie zugewiesen ist, sollte ihr Absichtsfilter diese Kategorie enthalten.

android.intent.category.LAUNCHER

category — Liefert zusätzliche Informationen über die auszuführende Aktion.

CATEGORY_LAUNCHER bedeutet, dass es im Launcher als Anwendung der obersten Ebene angezeigt werden sollte

Siehe die Dokumente..

  1. http://developer.android.com/reference/android/content/Intent.html
  2. http://developer.android.com/guide/topics/manifest/action-element.html

  • Nein, MAIN allein wird nicht “die Aktivität nach Hause starten”. MAIN hat viele Verwendungen.

    – CommonsWare

    9. August 2014 um 14:29 Uhr

  • Weitere Informationen finden Sie unter stackoverflow.com/a/25219614/9636037.

    – Abhimanyu

    21. Juli 2021 um 6:06 Uhr

1647176587 213 Was bedeutet androidintentactionMAIN
Shubhamhackz

<action android:name="android.intent.action.MAIN"/>

Ist die Hauptaktivität für diese Anwendung

 <category android:name="android.intent.category.LAUNCHER" />

Es gehört zur LAUNCHER-Kategorie, was bedeutet, dass es in allem, was sich selbst als „Launcher“ bezeichnet, wie dem Startbildschirm, ein Symbol erhält

 <category android:name="android.intent.category.DEFAULT" />

Der Aufruf von startActivity() fügt immer die DEFAULT-Kategorie hinzu, wenn keine andere Kategorie angegeben ist.

Im Allgemeinen nur hinzufügen android.intent.category.DEFAULT auch wenn Sie andere Kategorien haben. Dadurch wird sichergestellt, dass beim Anfordern der Absicht keine Kategorien bereitgestellt werden, während die Verwendung der Absicht gestartet wird startActivity(intent)dann kann Ihre Empfangsaktivität diese Absichten ebenfalls empfangen.

Quelle: The Busy Coders Guide to Android Development

https://commonsware.com/Android/

  • Danke für die Erklärung

    – Bleistiftcheck

    9. März um 20:56 Uhr

997740cookie-checkWas bedeutet android.intent.action.MAIN?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy