Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
devCorner<br />
Intents in <strong>Android</strong><br />
Abb. 4: Viele Anwendungen unterstützen<br />
Intents, bei denen die Aktion<br />
ACTION_SEND zum Hochladen von<br />
Bildern ausgeführt werden soll.<br />
Abb. 5: Der E-Mail-Client fügt bei der<br />
Aktion ACTION_SEND die Bilddatei im<br />
nächsten Schritt als Anhang in eine<br />
neue E-Mail ein.<br />
Abb. 6: Die Facebook-App lädt die<br />
Bilddatei in Ihr Konto auf der Plattform<br />
hoch (üblicherweise in das<br />
Fotoalbum Handy-Uploads).<br />
112<br />
dungen die Fähigkeiten der App kennt und<br />
die bereits installierten die Möglichkeiten des<br />
neuen Programms kennen. So kann es durchaus<br />
möglich sein, dass die Applikation, mit<br />
der ein Anwender eine bestimmte Aufgabe<br />
ausführt, noch gar nicht existiert hat, als Sie<br />
Ihre App programmiert haben.<br />
Gibt es mehrere Anwendungen, die darum<br />
konkurrieren, eine Aufgabe zu erledigen,<br />
dann fordert <strong>Android</strong> den Anwender auf, aus<br />
einer Liste das gewünschte Programm auszuwählen<br />
(Abbildung 3). Soll ein Intent stets<br />
auf das gleiche Programm zugreifen (zum<br />
Beispiel den bevorzugten Browser), dann<br />
kann man dies über die Option Standardmäßig<br />
für diese Aktion verwenden einstellen.<br />
Nehmen wir ein anderes Beispiel. Anwender<br />
wollen häufig digitale Fotos im Internet<br />
mit ihren Freunden teilen. Eine Anwendung<br />
könnte nun einen Intent mit dem Aktionstyp<br />
ACTION_SEND erzeugen und als Datenquelle<br />
eine Bilddatei festlegen. Viele Apps unterstützen<br />
diese Art von Intent (Abbildung 4),<br />
aber jede führt das Hochladen auf ihre eigene<br />
Art und Weise durch. So fügt zum Beispiel<br />
der E-Mail-Client das Foto als Anhang<br />
zu einer neuen E-Mail hinzu (Abbildung 5),<br />
wohingegen Facebook- und Twitter-Apps das<br />
Foto direkt ins soziale Netzwerk hochladen.<br />
Aber was passiert, wenn keine passende<br />
Anwendung auf dem Gerät installiert ist?<br />
Ihre Applikation kann überprüfen, ob Aktivitäten<br />
auf dem Gerät existieren, die zum Ausführen<br />
bestimmter Intents geeignet sind.<br />
Dazu kommen die Methoden, die die PackageManager-Klasse<br />
deklariert, zum Einsatz,<br />
zum Beispiel queryIntentActivities()<br />
oder queryBroadcastReceivers(). Diese Methoden<br />
ermöglichen es Ihnen, den Nutzern<br />
Ihres Programms Funktionen anzubieten, die<br />
nur dann aktiv sind, wenn entsprechende<br />
Applikationen auf dem Gerät existieren, die<br />
die nötigen Aktionen auch ausführen können.<br />
Verschiedene Aktionen<br />
Es gibt eine Reihe von Standard-Aktionen,<br />
wie zum Beispiel ACTION_VIEW, ACTION_EDIT<br />
und ACTION_SEND, die auf der <strong>Android</strong>-Plattform<br />
universell einsetzbar sind. Wenn Sie in<br />
Ihren Intents diese Standards verwenden,<br />
dann können Sie davon ausgehen, dass Ihre<br />
Apps mit anderen <strong>Android</strong>-Anwendungen<br />
kompatibel sind. Da mit jeder neuen <strong>Android</strong>-Version<br />
neue Aktionstypen hinzukommen,<br />
sollten Sie sich aber in puncto Kompatibilität<br />
mit der Entwicklerdoku vertraut machen.<br />
Entwickler können auch eigene Aktionen<br />
und Datentypen für ihre Intents schaffen.<br />
Durch die Verwendung von maßgeschneiderten<br />
Intents lassen sich komplexe Programme<br />
entwickeln. Wenn Sie jedoch anderen Entwicklern<br />
die Möglichkeit bieten wollen, ihre<br />
Applikationen in Ihr Programm zu integrieren,<br />
dann müssen Sie alle die von Ihrer Anwendung<br />
unterstützten Intents dokumentieren.<br />
Sie sollten dazu in Betracht ziehen, die<br />
von Ihnen erstellten Intents in ein externes,<br />
zentrales Register einzutragen, zum Beispiel<br />
bei Openintents.org [5].<br />
Aktivitäten wechseln<br />
<strong>Android</strong>-Applikationen bestehen aus mehreren<br />
Aktivitäten, wobei jede Aktivität einen<br />
Bildschirm oder eine Funktion darstellt.<br />
Während der Lebensdauer einer Anwendung<br />
wechselt der Anwender zwischen mehreren<br />
Aktivitäten. Der folgende Programmcode ruft<br />
die Methode startActivity() auf, die einen<br />
expliziten Intent enthält, der genau festlegt,<br />
welche Aktivität danach gestartet werden<br />
soll, und zwar durch den Klassennamen:<br />
startActivity(new Intent(<br />
getApplicationContext(),<br />
MyOtherActivity.class));<br />
Dieser Intent teilt der <strong>Android</strong>-Plattform mit,<br />
dass sie eine Aktivität namens MyOtherAktivität<br />
starten soll. Diese Klasse muss anderswo<br />
innerhalb der Applikation implementiert<br />
sein und muss einen Eintrag in der <strong>Android</strong>-Manifest-Datei<br />
Ihrer Anwendung haben,<br />
um einwandfrei zu funktionieren.<br />
Alternativ können Sie die Methode start<br />
ActivityForResult() zum Starten Ihrer<br />
Aktivität verwenden. Aktivitäten geben<br />
manchmal Ergebnisse an die Eltern-Aktivität<br />
zurück. So liefert zum Beispiel der Contact<br />
Picker Informationen über den Kontakt, den<br />
ein Anwender ausgewählt hat. Die Eltern-Aktivität<br />
muss eine Ergebnisrückgabe anfordern,<br />
indem die Aktivität mittels der Methode<br />
start ActivityForResult() gestartet<br />
wird. Das Ergebnis verarbeitet dann die Methode<br />
onActivityResult() der Eltern-Aktivität<br />
weiter. Die Ergebnisdaten speichert das<br />
System ebenfalls innerhalb eines Intents.<br />
Zusätzliche Informationen<br />
Intents lassen sich dazu verwenden, zusätzliche<br />
Informationen zwischen Aktivitäten –<br />
und folglich auch zwischen Anwendungen –<br />
zu übermitteln. Dazu fügen Sie dem Intent<br />
weitere Eigenschaften hinzu, sogenannte Extras.<br />
Jedes Extra besteht aus einer Kombination<br />
aus einer Bezeichnung und einem Wert.<br />
Sie können bestimmte Extras unter der Ver-<br />
FebruAr 2012 AndroId-user.de