43 Stimmen

Was ist der Zweck der Verwendung von Intent.createChooser() in StartActivity() beim Senden von E-Mails in Android

Wenn wir in Android eine E-Mail senden wollen, rufen wir die registrierte E-Mail-Anwendung mit Intent.ACTION_SEND wie folgt auf

Intent i = new Intent(Intent.ACTION_SEND);
startActivity(Intent.createChooser(i, "Send mail..."));

Mein Zweifel ist, warum wir Intent.createChooser in startActivity verwenden müssen, anstatt mit startActivty(i) . Gibt es einen besonderen Grund für die Verwendung Intent.createChooser() ?

1voto

Linh Punkte 49889

Von der Dokument

Android bietet zwei Möglichkeiten für die gemeinsame Nutzung von Daten zwischen Anwendungen:

  • Das Android Sharesheet ist in erster Linie für das Senden von Inhalten außerhalb Ihrer App und/oder direkt an einen anderen Benutzer. Zum Beispiel das Teilen eine URL mit einem Freund.
  • Der Android Intent Resolver ist am besten geeignet für Übergabe von Daten an die nächste Stufe einer wohldefinierten Aufgabe. Zum Beispiel, Öffnen einer PDF-Datei aus Ihrer Anwendung heraus und die Auswahl des bevorzugten Betrachter auswählen.
val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "Text to send.")
    type = "text/plain"
}

// WILL start Android intent resolver
startActivity(sendIntent)

// WILL start Android ShareSheet
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

Android Sharesheet hat einige Vorteile, wie z.B. die Unterstützung von DirectShare, Rich-Preview mit Copy-Option ab Android 10 (aber einige wenige Geräte haben keine Rich-Preview, selbst Android > 10)

0voto

JJD Punkte 47071

Ich empfehle einen Blick auf die de.cketti.mailto:email-intent-builder Bibliothek zu verwenden, anstatt die vom Android-Framework bereitgestellte API zu nutzen. Dieser Artikel erklärt, was kaputt ist und warum Sie wechseln sollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X