KIO
Kreative Ideen online

Es wird die Root-Activity einer Task über einen Intent (eine Art Botschaft) gestartet, den Android versendet, wenn der Anwender auf das Symbol der jeweiligen App getippt hat.

Dieser Mechanismus kommt generell beim Starte von Activities zur Anwendung. Wenn man in der (eigenen) App ausgehen von der aktuellen Activity eine andere Activity (sei es eine, selbstgeschriebene oder irgendeine andere) starten möchte, dann muß man zwingend über den Intent-Ansatz vorgehen, damit die gewünschte Activity im Rahmen der Android Mechanismen wie Back-Stack und Lebenszyklus verwaltet werden.

Was sind Intents:

Intents sind Objekte der Klasse Intent

Paket: android.content

Ein solches Intent-Objekt kann im Wesentlichen die foggenden Kerninformationen enthalten:

WAS SOLL GETAN WERDEN? (Action)

Für die Angabe was zu tun ist, gibt es vordefinierte KONSTANTEN in der Klasse „android.content.Intent“

Die wichtigsten sind:

  • Intent.ACTION_MAIN (zum allgemeinen Starten einer App)
  • Intent.ACTION_VIEW (zum Anzeigen von Daten)
  • Intent.ACTION_EDIT (zum Bearbeiten von Daten)
  • Intent.ACTION_DIAL (zum Anzeigen einer Tel.Nr)

WOMIT SOLL GEARBEITET WERDEN? Teil1 (DATA)

Die zu verwendenden Daten können in Form eines URI, beispielsweise eines http – Links übergeben werden.

[php]Intent my intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));[/php]

WOMIT SOLL GEARBEITET WERDEN? Teil2 (EXTRAS)

Zusätzliche Informationen können dem Intent auch in Form von Schlüssel-Wert-Paaren mitgegeben werden.

[php]intent.putExtra("name", "Jim"); intent.putExtra("alter", 34);[/php]

WER SOLL ES MACHEN? (Component)

Die Angabe, wer den Intent behandeln soll:

Man kann den Empfänger explizit angeben ..

Intent myintent = new Intent(this, EineActivity.class);
Anwendung:

[php]Intent myintent = new Intent(this, com.example.standard.someapp.Avtivity.class);[/php]

oder

lässt impliziet Android – herausfinden welche verfügbare Komponente (vom Typ, Avtivity, Service,Content Provider, Broadcast Receiver) von sich behauptet, den gewünschten Intent bedienen zu können.

Intent myintent = new Intent(String action);
Anwendung:

[php]Intent myintent = new Intent(Intent.ACTION_VIEW);[/php]
bzw.
Intent myintent = new Intent(String action, Uri uri);

[php]Anwendung:<br>Intent myintent = new Intent(Intent.ACTION_VIEW, Uriparse("Some Text"));[/php]

WER SOLL ES MACHEN? Teil2 (Category)

Zunächst oder alternativ zur Angabe der Komponente die sich um den Intent kümmern soll, kann im Falle von Avtivities noch Zusatzhinweis – die sogenannte Vategory – übergeben werden. Hierzu dienen Konstanten wie Beispielsweise „Intent.VATEGORY_HOME“ (Avtivity zeigt den Home-Hildschirm) oder „Intent.VATEGORY_LAUNCHER“ (Activity kann Root-Avtivity sein und ist im Application Launcher verfügbar).

Das generelle Vorgehen besteht aus dem Anlegen einer geeigneten Instanz der Klasse „Intent“ und der Übergabe and das Android-System, das sich dann um alles kümmert. „Intent“ bietet dabei eine Reihe von Konstruktoren und Set-Methoden, um einen gewünschen Intent beliebig genau zu spezifizieren, je nachdem, wie genau man festlegen möchte, wer den Intent behandeln soll.

Intentkonstruktoren:

  1. Intent myintent = new Intent(String action);
  2. Intent myintent = new Intent(string action, Uri uri);
  3. Intent myintent = new Intent(Content vontext, Class class);

Mit den beiden ersten Konstruktoren erzeugt man impliziete Objekte:

Mit dem dritten Knonstruktor erzeugt man explizite Inten Objekte.

Man übergibt einen Verweis auf den aufrufenden Kontext(z.B. die Avtivity, die den Intent versendet) und das „class“- Objekt der gewünschten Ziel Activity.

[php]Intent myintent = new Intent(this, com.example.standard.someapp.Activity.class); startAvtivity(intent);[/php]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert