Intent: Unterschied zwischen den Versionen

1.385 Bytes hinzugefügt ,  7. September 2018
Details zu impliziten Intents
(Ersten Absatz umgebaut)
(Details zu impliziten Intents)
Zeile 5: Zeile 5:
* '''Explizite Intents''' dienen dazu, innerhalb derselben [[App]] zu einer anderen [[Activity]] zu springen. Hierbei muss der Klassen-Name dieser Activity angegeben werden. Das "Sprungziel" wird also explizit (ausdrücklich<ref>{{Cite web | url = https://www.duden.de/rechtschreibung/explizit | title = Eintrag für das Wort "explizit" im Duden | accessdate = 2018-09-07 | publisher = duden.de}}</ref>) definiert.
* '''Explizite Intents''' dienen dazu, innerhalb derselben [[App]] zu einer anderen [[Activity]] zu springen. Hierbei muss der Klassen-Name dieser Activity angegeben werden. Das "Sprungziel" wird also explizit (ausdrücklich<ref>{{Cite web | url = https://www.duden.de/rechtschreibung/explizit | title = Eintrag für das Wort "explizit" im Duden | accessdate = 2018-09-07 | publisher = duden.de}}</ref>) definiert.
* '''Implizite Intents''' dienen dazu, eine Activity in einer anderen App zu öffnen, die eine bestimmte Aktion auf bestimmten Daten ausführen kann (z.B. Aktion "Anzeige" für Daten vom Typ "URL"). Es steht zum Zeitpunkt der Prorammierung also nicht fest, welche App oder Klasse den Intent verarbeiten wird; es kann auch vorkommen, dass auf einem Android-Gerät es keine App gibt, die den Intent verarbeiten kann (dann wird die aufrufende App vom System beendet).  
* '''Implizite Intents''' dienen dazu, eine Activity in einer anderen App zu öffnen, die eine bestimmte Aktion auf bestimmten Daten ausführen kann (z.B. Aktion "Anzeige" für Daten vom Typ "URL"). Es steht zum Zeitpunkt der Prorammierung also nicht fest, welche App oder Klasse den Intent verarbeiten wird; es kann auch vorkommen, dass auf einem Android-Gerät es keine App gibt, die den Intent verarbeiten kann (dann wird die aufrufende App vom System beendet).  
Bei der Programmierung wird ein Intent durch ein Objekt der Klasse ''android.content.Intent'' repräsentiert.<ref>{{Cite web | url = https://developer.android.com/reference/android/content/Intent | title = Offizielle API-Dokumentation zur Klasse android.content.Intent | accessdate = 2018-09-07 | publisher = android.com | language = en}}</ref>


== Explizite Intents ==
== Explizite Intents ==
Zeile 10: Zeile 12:


== Implizite Intents ==
== Implizite Intents ==
Im Gegensatz zu expliziten Intents, erfordern implizite Intents keinen Klassennamen, die zu startende Aktivität (Activity, Service, o.Ä.) muss also beim Erstellen des Intents nicht bekannt sein. Stattdessen wird ein allgemeiner Name einer auszuführenden Aktion verwendet, welche wiederum von anderen App-Komponenten (entweder der eigenen oder einer externen, anderen App) gehandhabt werden kann. Ein impliziter Intent wird meist dann verwendet, wenn davon ausgegangen werden kann, dass eine bestimmte Aktion potentiell auch von anderen Activities ausgeführt werden könnten (bspw. das Öffnen eines Weblinks).
Im Gegensatz zu expliziten Intents, erfordern implizite Intents keinen Klassennamen, die zu startende Aktivität (Activity, Service, o.Ä.) muss also beim Erstellen des Intents nicht bekannt sein. Stattdessen wird ein allgemeiner Name einer auszuführenden Aktion verwendet, welche wiederum von anderen App-Komponenten (entweder der eigenen oder einer externen, anderen App) gehandhabt werden kann. Ein impliziter Intent wird meist dann verwendet, wenn davon ausgegangen werden kann, dass eine bestimmte Aktion potentiell auch von anderen Activities ausgeführt werden könnten (bspw. das Öffnen eines Weblinks, weil praktisch auf jedem Android-Gerät eine Web-Browser-App vorhanden ist).
 
Wenn eine App einen impliziten Intent abschickt, der von keiner einzigen App auf dem Gerät verarbeitet werden kann (z.B. Intent zum Anwählen einer Telefon-Nummer auf einem [[Tablet]], das über kein Mobilfunk-Modul verfügt), dann wird die App vom System beendet (sie "stürzt" ab). Eine App sollte deshalb vor dem Versenden eines impliziten Intents zur Laufzeit überprüfen, ob es auf dem Gerät mindestens eine App gibt, die den Intent verarbeiten kann.
 
Wenn es auf einem Gerät zwei oder mehr Apps gibt, die einen impliziten Intent verarbeiten können (z.B. wenn mehrere Web-Browser installiert sind), dann fragt das System den Nutzer mit einem Dialog, mit welcher dieser Apps der Intent verarbeitet werden soll. Der Nutzer kann hierbei angeben, ob das System sich diese Auswahl merken soll, so dass bei nächsten Auftreten dieses Intents ohne Rückfrage beim Nutzer der Intent an die ausgewählte App weitergeleitet wird.


== Einzelnachweise ==
== Einzelnachweise ==
<references />
<references />
[[Kategorie:App Entwicklung]]
Autopatrol, Moderator
1.304

Bearbeitungen