Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
wendung der Bezeichnung auslesen und<br />
schreiben, indem Sie die entsprechenden<br />
put()- oder get()-Methoden verwenden, die<br />
in der Intent-Klasse zur Verfügung stehen.<br />
Bei der Übermittlung von zusätzlichen Informationen<br />
zwischen Ihren Aktivitäten können<br />
Sie beliebige weitere Eigenschaften definieren,<br />
die Sie gerade benötigen. Es hat sich<br />
die Konvention eingebürgert, die Paketnamen<br />
der Anwendung als Präfix für die Bezeichnung<br />
des Extra zu benutzen. Der folgende<br />
Beispielcode zeigt einen Intent mit<br />
einem Extra, das den aktuellen Level eines<br />
Spiels als ganzzahligen Wert speichert:<br />
Intent intent = new<br />
Intent(getApplicationContext(), GameActivity.<br />
class);<br />
intent.putExtra("com.mamlambo.mygame.LEVEL",<br />
7);<br />
startActivity(intent);<br />
Die neue Aktivität GameActivity greift als Teil<br />
der onCreate()-Methode auf den Intent zu<br />
und liest aus dem Extra-Teil die Informationen<br />
zum Level aus.<br />
Intent callingIntent = getIntent();<br />
int helpLevel = callingIntent.<br />
getIntExtra("com.mamlambo.mygame.LEVEL", 1);<br />
Viele der häufig eingesetzten Intents verwenden<br />
Extras. Verschiedene Intents unterstützen<br />
unterschiedliche Extras, deswegen müssen<br />
Sie in der <strong>Android</strong>-SDK-Dokumentation<br />
nachlesen, welche Extras konkret unterstützt<br />
werden. Der Intent ACTION_SEND beispielsweise<br />
wird dazu verwendet, Bild- oder Textdateien<br />
zu senden; dieser Intent ermöglicht<br />
Funktionen wie die von Social-Media-Plattformen<br />
bekannte Option Mit Freunden Teilen.<br />
Der Intent ACTION_SEND unterstützt eine<br />
Reihe von Extras, darunter EXTRA_SUBJECT,<br />
EXTRA_EMAIL, EXTRA_CC und EXTRA_BCC.<br />
Die Aktivität, die den Intent verschickt,<br />
kann also durch diese Extras u.a. den Betreff<br />
der Nachricht angeben. Darüber hinaus lassen<br />
sich die E-Mail-Adresse sowie CC- und<br />
BCC-Empfänger bestimmen. Eine Anwendung,<br />
die diesen Intent empfängt und verarbeitet,<br />
kann diese Extras dazu benutzen, die<br />
entsprechenden Adress- und Textfelder automatisch<br />
vorzubelegen, was dem Anwender<br />
etwas Tipperei erspart.<br />
Picker Intents<br />
Ein sehr mächtiger Aktivitätstyp ist der<br />
Picker. Picker-Aktivitäten starten Sie über die<br />
Methode startActivityForResult(). Sie<br />
präsen tieren dem Anwender ein Liste von<br />
Objekten, aus der er oder sie eine Auswahl<br />
treffen kann; das ausgewählte Objekt wird<br />
dann an die Eltern-Aktivität zurückgegeben.<br />
Mit wenigen Zeilen Code betten Sie in Ihre<br />
Aktivität einen Picker ein, der es dem Anwender<br />
ermöglicht, ein bestimmtes Bild,<br />
einen Kontakt oder einen Klingelton auszuwählen;<br />
die Aktivität kann dann das Ergebnis<br />
weiterverarbeiten. Picker Aktivitäten startet<br />
man häufig mit der Intent-Aktion ACTION_<br />
PICK; es gibt allerdings einige spezialisierte<br />
Picker-Aktivitäten, wie zum Beispiel den<br />
Klingelton-Picker, die über eigene Aktionstypen<br />
verfügen (zum Beispiel ACTION_RING<br />
TONE_PICKER).<br />
Ein Beispiel für eine Picker-Aktivität finden<br />
Sie im untenstehenden Listing. Als Datenquelle<br />
benutzt der Picker per URI den Speicherort<br />
der auf dem Gerät abgelegten Bilddateien,<br />
der Aktionstyp lautet ACTION_PICK. Dadurch<br />
wählt der Anwender ein Bild in der<br />
Foto-Anwendung aus (Abbildung 7).<br />
Intent galleryPicker = new Intent(Intent.<br />
ACTION_PICK,<br />
MediaStore.Images.Media.INTERNAL_CONTENT_URI);<br />
startActivityForResult(galleryPicker, GALLERY_<br />
PICKER_RESULT);<br />
Intents lassen sich auch zur Verbreitung von<br />
wichtigen Ereignissen im gesamten Betriebssystem<br />
nutzen. Ihre Anwendungen können<br />
Intents verschicken, in die sich andere Applikationen<br />
quasi einklinken, was ihre Funktionsfähigkeit<br />
vielfältig erweitert. So kann beispielsweise<br />
eine E-Mail-Applikation immer<br />
dann einen Broadcast-Intent verschicken,<br />
wenn eine neue E-Mail eingeht. Spamschutz-<br />
oder Antivirus-Programme können auf diese<br />
Systemnachricht reagieren, indem sie die<br />
neue E-Mail einem Scan unterziehen.<br />
Systemnachrichten verbreiten<br />
<strong>Android</strong> teilt viele Systemereignisse per<br />
Broadcast mit. Wenn es beispielsweise bei<br />
niedrigem Akkustand eine Warnung verschickt<br />
(ACTION_BATTERY_LOW), können Applikationen<br />
darauf reagieren, indem sie Daten<br />
sichern, Netzwerkaktivitäten einschränken<br />
oder den Akku schonende Einstellungen<br />
wählen. Anwendungen verschicken Broadcast-Intents<br />
mittels der Methode sendBroadcast();<br />
um Broadcast Intents zu empfangen,<br />
müssen sie als Empfangskomponenten mit<br />
den entsprechenden Intent-Filtern registriert<br />
sein, außerdem muss ein BroadcastReceiver<br />
implementiert sein. Happy Intents! ● ● ●<br />
devCorner<br />
Abb. 7: Auswahl eines Bildes in der<br />
Gallery-App mittels ACTION_PICK.<br />
Shane Conder und Lauren Darcey<br />
haben mehrere Lehrbücher zur<br />
Entwicklung mobiler Software<br />
verfasst, darunter <strong>Android</strong> Wireless<br />
Application Development<br />
und SAMS Teach Yourself <strong>Android</strong><br />
Application Development in<br />
24 Hours. Sie erreichen die Autoren<br />
per E-Mail über die Adresse<br />
androidwirelessdev+sm@gmail.<br />
com oder über ihr Blog unter der<br />
Adresse http:// androidbook.<br />
blogspot. com.<br />
infos<br />
Intents in <strong>Android</strong><br />
ÜBer die Autoren<br />
[1] Quellcode zum Artikel<br />
http:// code. google. com/ p/ an<br />
droid‑mastering‑intents‑<br />
tutorial/<br />
[2] <strong>Android</strong>-SDK:<br />
http:// developer. android.<br />
com/ sdk/<br />
[3] Intents-Entwicklerdokumentation:<br />
http:// developer.<br />
android. com/ reference/<br />
android/ content/ Intent. html<br />
[4] Starten von Google-Anwendungen<br />
per Intent:<br />
http:// developer. android.<br />
com/ guide/ appendix/<br />
g‑app‑intents. html<br />
[5] OpenIntents.org<br />
Intent-Verzeichnis:<br />
http:// www. openintents. org/<br />
en/ intentstable<br />
AndroId-user.de FebruAr 2012 113