Was sind Android-Absichten?

Absichten sind ein grundlegendes Thema für Android-Entwickler. Es ist unmöglich, Android-Anwendungen zu entwickeln, ohne mit Absichten in Berührung zu kommen. In diesem Tutorial werde ich Ihnen die Absichten von A bis Z beibringen.

Was sind Absichten??

Bei einem Fußballspiel geben die Mannschaftskameraden den Ball um das Spielfeld mit dem Ziel, ihn in das Tor des Gegners zu schicken. Der Ball wird vom Torwart der Mannschaft an die Verteidiger übergeben. Als nächstes kommt es zu den Mittelfeldspielern, und wenn alles wie geplant klappt, schickt einer der Stürmer es in das Netz des Gegners. Es wird davon ausgegangen, dass der Torhüter der Gegenseite ihn nicht fernhalten konnte!

In Android wird das Senden von Nachrichten durch das ermöglicht Absicht Objekt. Mit Hilfe von Absichten können Android-Komponenten Funktionalität von anderen Android-Komponenten anfordern. Wenn Sie die Instagram-App auf Ihrem Telefon öffnen und mit ihr ein Foto aufnehmen, haben Sie eine Absicht ausgenutzt. Absichten helfen auch bei der Kommunikation zwischen Teilen einer App; Die Bewegung von einem Bildschirm (Aktivität) zu einem anderen wird durch Absichten ermöglicht.

Betrachten Sie es so: Alle Komponenten (Anwendungen und Bildschirme) des Android-Geräts sind isoliert. Die einzige Art und Weise, wie sie miteinander kommunizieren, ist durch Absichten.

Aktivitäten mit Absichten beginnen

Wie bereits erwähnt, können Sie mit Intents verschiedene Komponenten starten: Aktivitäten, Dienste und Rundfunkempfänger.

Um eine Aktivität zu starten, verwenden Sie die Methode startActivity(Absicht).

Hier ist ein Code-Snippet, der zeigt, wie eine andere Aktivität aus einer Absicht heraus gestartet wird.

 Intent numbersIntent = new Intent (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);

Zuerst erstellen wir ein neues Absicht Objekt und übergeben Sie das ZahlenAktivität Klasse. Dann starten wir eine neue Aktivität mit dieser Absicht.

Arten von Absichten

Android unterstützt zwei Arten von Absichten: explizit und implizit. Wenn eine Anwendung ihre Zielkomponente in einer Absicht definiert, handelt es sich um eine explizite Absicht. Wenn die Anwendung keine Zielkomponente benennt, handelt es sich um eine implizite Absicht.

Beispiel für explizite Absicht

Der Code-Snippet von Code oben ist ein Beispiel für explizite Absichten. Schau es dir nochmal an.

 Intent numbersIntent = new Intent (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);

Hier, ZahlenAktivität ist die Zielkomponente von unserer Hauptaktivität. Das bedeutet, dass ZahlenAktivität ist die definierte Komponente, die vom Android-System aufgerufen wird. Es ist wichtig zu beachten (wie im obigen Beispiel), dass explizite Absichten normalerweise in einer Anwendung verwendet werden, da dies dem Entwickler die beste Kontrolle darüber gibt, welche Klasse gestartet wird.

Beispiel für implizite Absicht

Hier ist eine implizite Absicht:

 Vorsatz = neuer Vorsatz (Intent.ACTION_VIEW, Uri.parse ("http://www.tutsplus.com")); startActivity (Absicht);

Wenn Sie den oben genannten Code in Ihrer Codebase haben, kann Ihre Anwendung über eine Absicht eine Browserkomponente für eine bestimmte URL starten. Aber wie erkennt das Android-System die Komponenten, die auf eine bestimmte Absicht reagieren können??

Eine Komponente kann über ein registriert werden Vorsatzfilter für eine bestimmte Aktion. Absichtsfilter können für Komponenten statisch im registriert werden AndroidManifest.xml. Hier ein Beispiel, bei dem eine Komponente als Web Viewer registriert wird:

      

Absichten in einer App verwenden

Lassen Sie uns etwas Code schreiben, um zu sehen, wie es funktioniert. In diesem Abschnitt erstellen Sie eine kleine App, um beide Absichtsrichtungen auszuprobieren. Die App hat ein kleines Formular, um einen Vornamen und einen Nachnamen einzugeben. Wenn der einreichen Wenn Sie auf die Schaltfläche klicken, werden beide eingegebenen Werte an eine andere Aktivität übergeben. Es gibt auch eine Schaltfläche zum Starten eines Browsers Ihrer Wahl. Der gewählte Browser wird http://code.tutsplus.com geöffnet.

Öffnen Sie Android Studio und generieren Sie Ihr Hauptaktivität. Sie können den Namen des Pakets auf einstellen com.tutsplus.code.android.droidintent.

Ihre Hauptaktivität beginnt mit einigen Importen und der Klassendeklaration:

Paket com.tutsplus.code.android.droidintent; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; Import android.view.View; import android.widget.Button; import android.widget.EditText; öffentliche Klasse MainActivity erweitert AppCompatActivity 

Dann überschreiben Sie die onCreate () Methode zum Initialisieren der Aktivität mit einem beliebigen gespeicherten Status und dem Aktivitätslayout (wir erstellen dies später).

 @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Button-Handler gehen hier

Als Nächstes erhalten Sie Verweise auf jede der im Layout definierten Schaltflächen und hängen einen Klick-Listener an.

 final Button submitButton = (Button) findViewById (R.id.submit_button); submitButton.setOnClickListener (neuer View.OnClickListener () @Override public void onClick (View v) EditText firstName = (EditText) findViewById (R.id.first_name_text); EditText lastName = (EditText) findViewById (R.id.last_name) ; String firstNameString = firstName.getText (). ToString (); String lastNameString = lastName.getText (). ToString (); Intents submitIntent = neuer Intent (MainActivity.this, ShowActivity.class); submitIntent.putExtra ("firstNameString", firstNameString); submitIntent.putExtra ("lastNameString", lastNameString); startActivity (submitIntent);); 

Für die einreichen Taste, stellen Sie ein OnClickListener um eine Aktion auszulösen, wenn auf die Schaltfläche geklickt wird. Wenn ein Klick erfolgt, schnappen wir uns den Vor- und Nachnamen aus der Ansicht und senden sie an die nächste Aktivität: ShowActivity. Die Zielkomponente ist explizit in der Absicht definiert, sodass dies ein Beispiel für eine explizite Absicht ist.

 final Button browserButton = (Button) findViewById (R.id.browser_button); browserButton.setOnClickListener (neuer View.OnClickListener () @Override public void onClick (Ansicht v) Intent Intent = New Intent (Intent.ACTION_VIEW, Uri.parse ("https://code.tutsplus.com")); startActivity (Absicht);); 

Für die Browser-Schaltfläche die OnClickListener erstellt eine neue Absicht, um jede Anwendung zu starten, die dem Filter entspricht: ACTION_VIEW die eine Web-URL behandeln sollte. Mit anderen Worten, es wird ein Webbrowser gestartet. Wenn auf Ihrem Gerät mehr als eine Browseranwendung installiert ist, werden Sie aufgefordert, eine zu wählen, um die Website zu öffnen. Dies ist ein Beispiel für eine implizite Absicht.

Hauptaktivität Layout

Das Layout für Hauptaktivität wird in diesem Tutorial sehr einfach sein.

      

Hier hast du zwei Textvorschau und zwei Text bearbeiten jeweils Vorname und Nachname. Es gibt auch eine Schaltfläche zum Übertragen der Namen und eine weitere zum Starten Ihres Browsers.

Erstellen Sie die ShowActivity

Um unsere App abzuschließen, müssen Sie eine Aktivität erstellen, um die oben definierte explizite Absicht zu handhaben. Erstellen Sie eine neue Aktivität mit dem Namen ShowActivity. In dieser Aktivität wird das Ergebnis der Eingabe des Vornamens und Nachnamens angezeigt. So sollte es aussehen:

Paket com.tutsplus.code.android.droidintent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class ShowActivity erweitert AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_show); Bündel Extras = getIntent (). GetExtras (); String inputFirstName = extras.getString ("firstNameString"); String inputLastName = extras.getString ("lastNameString"); TextView showFirstName = (TextView) findViewById (R.id.show_first_name); TextView showLastName = (TextView) findViewById (R.id.show_last_name); showFirstName.setText (inputFirstName); showLastName.setText (inputLastName); 

In dieser Aktivität beginnen Sie damit, dass die Zeichenfolgen vom übergeben werden Hauptaktivität. Mit dem können Sie einen Verweis auf die Absicht erhalten, die den Start dieser Aktivität ausgelöst hat getIntent () Funktion. Dann können Sie auf die übergebenen Zeichenfolgen zugreifen getExtras (). getString (). Nachdem Sie die TextView-Instanzen aus dem Layout abgerufen haben, zeigen Sie schließlich die erhaltenen Werte an. 

ShowActivity Layout

Das Layout für diese Aktivität ist einfach:

      

App testen

Jetzt können Sie Ihre App erstellen und auf Ihrem Android-Gerät ausprobieren!

Daten mit Bundles übergeben

Sie können Bundles auch verwenden, wenn Sie Daten über Absichten weiterleiten.

Das Bündeln Diese Klasse ermöglicht das Speichern komplexer Daten und unterstützt Datentypen wie Zeichenfolgen, Zeichen, Boolean, Integer usw. Hier ist ein Beispiel wie Teil von MainActivity.java würde schauen, wenn du benutzt hast Bündeln.

// Bundle-Objekt erstellen Bundle b = new Bundle (); // Speichern von Daten im Bundle b.putString ("firstNameString", firstNameString); b.putString ("lastNameString", lastNameString); // Intent-Objekt erstellen Intent submitIntent = new Intent (MainActivity.this, ShowActivity.class); // Bündelobjekt in Absicht speichern submitIntent.putExtra (b); startActivity (submitIntent);

Fazit

In diesem Lernprogramm haben wir eine kurze Einführung in die Verwendung von Absichten zum Erstellen von Aktivitäten in Android erhalten. Wir haben uns den Unterschied zwischen expliziten und impliziten Intentionen angesehen und ein einfaches Beispiel für jeden Typ geschrieben. 

Weitere Informationen zu den Absichten finden Sie in der Android-Dokumentation. Zu verstehen, wie sie funktionieren, ist sehr wichtig. Wenn Sie mehr Apps erstellen, werden Sie auf viele verschiedene Arten von Intents und deren Verwendung stoßen.

In der Zwischenzeit können Sie einige unserer anderen Beiträge zur Entwicklung von Android-Apps lesen!