Wie sende ich E-Mails von meiner Android-Anwendung?


Antworten:


978

Der beste (und einfachste) Weg ist die Verwendung eines Intent:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

Andernfalls müssen Sie Ihren eigenen Client schreiben.


6
Im obigen Code gibt es keine Absender-E-Mail-ID. Wie wird die Nachricht dann gesendet?
KIRAN KJ

38
KIRAN: Sie müssen untersuchen, wie Absichten funktionieren, um dies zu verstehen. Grundsätzlich wird eine E-Mail-Anwendung geöffnet, in der Empfänger, Betreff und Text bereits ausgefüllt sind. Es liegt an der E-Mail-App, das Senden durchzuführen.
Jeremy Logan

8
Die E-Mail wird beim Starten der Aktivität nicht im Feld "TO" angezeigt. weiß jemand?
Hamza Waqas

11
Der große Beitrag dieses Kommentars ist: Nachricht / rfc822
Guilherme Oliveira

22
Fügen Sie diese hinzu, um sicherzustellen, dass die Auswahl nur E-Mail-Apps anzeigt: Intent i = new Intent(Intent.ACTION_SENDTO); i.setType("message/rfc822"); i.setData(Uri.parse("mailto:"));
Edris

194

Verwenden Sie .setType("message/rfc822")oder die Auswahl zeigt Ihnen alle (vielen) Anwendungen, die die Sendeabsicht unterstützen.


5
Schön, das sollte mehr Stimmen haben. Sie werden keine Tests auf dem Emulator bemerken, aber wenn Sie "Text / Plain" auf einem realen Gerät senden, erhalten Sie eine Liste mit mehr als 15 Apps! Daher wird "message / rfc822" definitiv empfohlen (der E-Mail-Standard).
Blundell

7
@Blundell Hallo, aber ich habe keinen Unterschied gesehen, nachdem ich zumessage/rfc822
Draw

2
Können Sie Bluetooth aus der Liste entfernen? Dies zeigt sich auch bei diesem Typ. +1 aber, ordentlicher Trick!
Ingh.am

4
Hat unseren Speck gerettet. Ich kann mir nicht vorstellen, dem Kunden zu erklären, dass der Benutzer Supportanfragen twittern könnte, anstatt sie per E-Mail zu versenden.
Kevin Galligan

1
+1111111 Dies verdient endlose +1, damit andere dies sehen können. Ich habe diesen Teil verpasst und musste mich eine Weile mit diesem Problem befassen!
ChallengeAccepted

89

Ich benutze dies seit langer Zeit und es scheint gut, dass keine Nicht-E-Mail-Apps angezeigt werden. Nur eine andere Möglichkeit, eine E-Mail-Absicht zu senden:

Intent intent = new Intent(Intent.ACTION_SENDTO); // it's not ACTION_SEND
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject of email");
intent.putExtra(Intent.EXTRA_TEXT, "Body of email");
intent.setData(Uri.parse("mailto:default@recipient.com")); // or just "mailto:" for blank
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this will make such that when user returns to your app, your app is displayed, instead of the email app.
startActivity(intent);

1
Nicht unterstützte Aktion: Diese Aktion wird derzeit nicht unterstützt
erdomester

4
lgor G-> plz wechselt von setType "(plain / text") zu setType ("text / plain")
sachit

2
.setType ("message / rfc822") nicht text / plain
Der hungrige Androider

1
Dieser Code wird E-Mail-Absicht öffnen? Wie kann ich eine E-Mail senden, ohne dem Benutzer @yuku die Absicht zu zeigen? Ich möchte ein Passwort an die E-Mail senden
Erum

2
Diese Antwort ist ziemlich einflussreich . :)
Nick Volynkin

54

Ich habe etwas in Anlehnung an die aktuell akzeptierte Antwort verwendet, um E-Mails mit einer angehängten binären Fehlerprotokolldatei zu senden. GMail und K-9 senden es einwandfrei und es kommt auch einwandfrei auf meinem Mailserver an. Das einzige Problem war mein Mail-Client der Wahl Thunderbird, der Probleme beim Öffnen / Speichern der angehängten Protokolldatei hatte. Tatsächlich hat es die Datei einfach überhaupt nicht gespeichert, ohne sich zu beschweren.

Ich habe mir einen der Quellcodes dieser Mail angesehen und festgestellt, dass der Protokolldateianhang (verständlicherweise) den MIME-Typ hat message/rfc822. Natürlich ist dieser Anhang keine angehängte E-Mail. Aber Thunderbird kann diesen winzigen Fehler nicht anmutig bewältigen. Das war also eine Art Mist.

Nach ein wenig Recherche und Experimentieren habe ich die folgende Lösung gefunden:

public Intent createEmailOnlyChooserIntent(Intent source,
    CharSequence chooserTitle) {
    Stack<Intent> intents = new Stack<Intent>();
    Intent i = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",
            "info@domain.com", null));
    List<ResolveInfo> activities = getPackageManager()
            .queryIntentActivities(i, 0);

    for(ResolveInfo ri : activities) {
        Intent target = new Intent(source);
        target.setPackage(ri.activityInfo.packageName);
        intents.add(target);
    }

    if(!intents.isEmpty()) {
        Intent chooserIntent = Intent.createChooser(intents.remove(0),
                chooserTitle);
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                intents.toArray(new Parcelable[intents.size()]));

        return chooserIntent;
    } else {
        return Intent.createChooser(source, chooserTitle);
    }
}

Es kann wie folgt verwendet werden:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("*/*");
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(crashLogFile));
i.putExtra(Intent.EXTRA_EMAIL, new String[] {
    ANDROID_SUPPORT_EMAIL
});
i.putExtra(Intent.EXTRA_SUBJECT, "Crash report");
i.putExtra(Intent.EXTRA_TEXT, "Some crash report details");

startActivity(createEmailOnlyChooserIntent(i, "Send via email"));

Wie Sie sehen können, kann die Methode createEmailOnlyChooserIntent problemlos mit der richtigen Absicht und dem richtigen MIME-Typ eingegeben werden.

Anschließend wird die Liste der verfügbaren Aktivitäten durchgearbeitet, die auf eine ACTION_SENDTO- mailtoProtokollabsicht reagieren (bei der es sich nur um E-Mail-Apps handelt), und eine Auswahl basierend auf dieser Liste von Aktivitäten und der ursprünglichen ACTION_SEND-Absicht mit dem richtigen MIME-Typ erstellt.

Ein weiterer Vorteil ist, dass Skype nicht mehr aufgeführt ist (was zufällig auf den MIME-Typ rfc822 reagiert).


1
Ich habe gerade Ihr Code-Snippet eingefügt und es funktioniert gut. Bevor Apps wie Google Drive, Skype usw. aufgelistet wurden. Gibt es jedoch keine Möglichkeit, eine E-Mail aus der Anwendung zu senden, ohne eine andere Anwendung aufzurufen? Ich habe gerade den Artikel über den E-Mail-Client gelesen, den @Rene oben postet, aber er scheint zu kompliziert zu sein, um nur eine einfache E-Mail zu senden
Alex Cio

Hervorragende Antwort. Ich hatte auch Skype und Google Drive ACTION_SENDund das macht es wunderbar.
Darrenp

1
Die oben genannte beliebteste Lösung gibt auch Skype und Vkontakte zurück. Diese Lösung ist besser.
Denis Kutlubaev

Was ist CrashLogFile? Wo wurde es initialisiert? Bitte angeben
Noufal

@ Noufal Dies ist nur ein Rest meiner eigenen Codebasis. Es ist eine FileInstanz, die auf eine Absturzprotokolldatei verweist, die meine Android-Apps im Hintergrund erstellen, falls es eine nicht erfasste Ausnahme gab. Dieses Beispiel soll nur veranschaulichen, wie ein E-Mail-Anhang hinzugefügt wird. Sie können auch jede andere Datei aus dem externen Speicher anhängen (z. B. ein Image). Sie können diese Zeile auch mit entfernen, crashLogFileum ein funktionierendes Beispiel zu erhalten.
Tiguchi

37

Um E-Mail-Apps einfach zuzulassen , um Ihre Absicht zu lösen, müssen Sie ACTION_SENDTO als Aktion und mailto als Daten angeben.

private void sendEmail(){

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
    emailIntent.setData(Uri.parse("mailto:" + "recipient@example.com")); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "My email's subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "My email's body");

    try {
        startActivity(Intent.createChooser(emailIntent, "Send email using..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(Activity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
    }

}

23

Ich habe dieses Problem mit einfachen Codezeilen gelöst, wie in der Android-Dokumentation erläutert.

( https://developer.android.com/guide/components/intents-common.html#Email )

Das wichtigste ist die Flagge: es ist ACTION_SENDTOund nichtACTION_SEND

Die andere wichtige Linie ist

intent.setData(Uri.parse("mailto:")); ***// only email apps should handle this***

Übrigens, wenn Sie ein leeres senden Extra, if()funktioniert das am Ende nicht und die App startet den E-Mail-Client nicht.

Laut Android-Dokumentation. Wenn Sie sicherstellen möchten, dass Ihre Absicht nur von einer E-Mail-App (und nicht von anderen Textnachrichten oder sozialen Apps) verarbeitet wird, verwenden Sie die ACTION_SENDTOAktion und fügen Sie das mailto:Datenschema " " hinzu. Zum Beispiel:

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

21

Die Strategie, Apps zu verwenden .setType("message/rfc822")oder ACTION_SENDzu passen, die keine E-Mail-Clients sind, wie Android Beam und Bluetooth .

Die Verwendung von ACTION_SENDTOund eines mailto:URI scheint einwandfrei zu funktionieren und wird in der Entwicklerdokumentation empfohlen . Wenn Sie dies jedoch auf den offiziellen Emulatoren tun und keine E-Mail-Konten eingerichtet sind (oder keine E-Mail-Clients vorhanden sind), wird die folgende Fehlermeldung angezeigt:

Nicht unterstützte Aktion

Diese Aktion wird derzeit nicht unterstützt.

Wie nachfolgend dargestellt:

Nicht unterstützte Aktion: Diese Aktion wird derzeit nicht unterstützt.

Es stellt sich heraus, dass die Emulatoren die Absicht in eine aufgerufene Aktivität auflösen com.android.fallback.Fallback, die die obige Meldung anzeigt. Anscheinend ist dies beabsichtigt.

Wenn Sie möchten, dass Ihre App dies umgeht, damit es auch auf den offiziellen Emulatoren ordnungsgemäß funktioniert, können Sie dies überprüfen, bevor Sie versuchen, die E-Mail zu senden:

private void sendEmail() {
    Intent intent = new Intent(Intent.ACTION_SENDTO)
        .setData(new Uri.Builder().scheme("mailto").build())
        .putExtra(Intent.EXTRA_EMAIL, new String[]{ "John Smith <johnsmith@yourdomain.com>" })
        .putExtra(Intent.EXTRA_SUBJECT, "Email subject")
        .putExtra(Intent.EXTRA_TEXT, "Email body")
    ;

    ComponentName emailApp = intent.resolveActivity(getPackageManager());
    ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback");
    if (emailApp != null && !emailApp.equals(unsupportedAction))
        try {
            // Needed to customise the chooser dialog title since it might default to "Share with"
            // Note that the chooser will still be skipped if only one app is matched
            Intent chooser = Intent.createChooser(intent, "Send email with");
            startActivity(chooser);
            return;
        }
        catch (ActivityNotFoundException ignored) {
        }

    Toast
        .makeText(this, "Couldn't find an email app and account", Toast.LENGTH_LONG)
        .show();
}

Weitere Informationen finden Sie in der Entwicklerdokumentation .


13

Das Senden von E-Mails kann mit Absichten erfolgen, für die keine Konfiguration erforderlich ist. Dann ist jedoch eine Benutzerinteraktion erforderlich, und das Layout ist etwas eingeschränkt.

Um eine komplexere E-Mail ohne Benutzerinteraktion zu erstellen und zu senden, müssen Sie Ihren eigenen Client erstellen. Das erste ist, dass die Sun Java-API für E-Mails nicht verfügbar ist. Ich hatte Erfolg damit, die Apache Mime4j-Bibliothek zum Erstellen von E-Mails zu nutzen. Alles basierend auf den Dokumenten bei nilvec .


6

Hier ist der Beispielarbeitscode, der die E-Mail-Anwendung auf dem Android-Gerät öffnet und automatisch mit An Adresse und Betreff in der verfassten E-Mail gefüllt wird .

protected void sendEmail() {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:feedback@gmail.com"));
    intent.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

Vielen Dank. Im Vergleich zu einer Lösung von @Avi Parshan setzen Sie eine E-Mail ein setData()und Avi setzt ein putExtra(). Beide Varianten funktionieren. Aber wenn nur entfernen setDataund verwenden intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"hi@example.com"});, würde es eine geben ActivityNotFoundException.
CoolMind

5

Ich verwende den folgenden Code in meinen Apps. Dies zeigt genau E-Mail-Client-Apps wie Google Mail.

    Intent contactIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", getString(R.string.email_to), null));
    contactIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.email_subject));
    startActivity(Intent.createChooser(contactIntent, getString(R.string.email_chooser)));

5

Dies zeigt Ihnen nur die E-Mail-Clients (sowie PayPal aus einem unbekannten Grund).

 public void composeEmail() {

    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"hi@example.com"});
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Body");
    try {
        startActivity(Intent.createChooser(intent, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }
}

1
Schöne Lösung! Es werden viele ungeeignete Anwendungen vermieden (meistens als "Teilen" verwendet). Fügen Sie intent.type = "message/rfc822"; intent.type = "text/html";hier nicht hinzu , da dies zu Ausnahmen führen kann.
CoolMind

3

So habe ich es gemacht. Schön und einfach.

String emailUrl = "mailto:email@example.com?subject=Subject Text&body=Body Text";
        Intent request = new Intent(Intent.ACTION_VIEW);
        request.setData(Uri.parse(emailUrl));
        startActivity(request);

3

Diese Funktion leitet zuerst Absichts-Google Mail zum Senden von E-Mails. Wenn Google Mail nicht gefunden wird, fördern Sie die Absichtsauswahl. Ich habe diese Funktion in vielen kommerziellen Apps verwendet und sie funktioniert einwandfrei. Hoffe es wird dir helfen:

public static void sentEmail(Context mContext, String[] addresses, String subject, String body) {

    try {
        Intent sendIntentGmail = new Intent(Intent.ACTION_VIEW);
        sendIntentGmail.setType("plain/text");
        sendIntentGmail.setData(Uri.parse(TextUtils.join(",", addresses)));
        sendIntentGmail.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
        sendIntentGmail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentGmail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentGmail.putExtra(Intent.EXTRA_TEXT, body);
        mContext.startActivity(sendIntentGmail);
    } catch (Exception e) {
        //When Gmail App is not installed or disable
        Intent sendIntentIfGmailFail = new Intent(Intent.ACTION_SEND);
        sendIntentIfGmailFail.setType("*/*");
        sendIntentIfGmailFail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_TEXT, body);
        if (sendIntentIfGmailFail.resolveActivity(mContext.getPackageManager()) != null) {
            mContext.startActivity(sendIntentIfGmailFail);
        }
    }
}

1
Vielen Dank. Rette mein Leben
androCoder-BD

2

versuchen Sie es einfach

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    buttonSend = (Button) findViewById(R.id.buttonSend);
    textTo = (EditText) findViewById(R.id.editTextTo);
    textSubject = (EditText) findViewById(R.id.editTextSubject);
    textMessage = (EditText) findViewById(R.id.editTextMessage);

    buttonSend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String to = textTo.getText().toString();
            String subject = textSubject.getText().toString();
            String message = textMessage.getText().toString();

            Intent email = new Intent(Intent.ACTION_SEND);
            email.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
            // email.putExtra(Intent.EXTRA_CC, new String[]{ to});
            // email.putExtra(Intent.EXTRA_BCC, new String[]{to});
            email.putExtra(Intent.EXTRA_SUBJECT, subject);
            email.putExtra(Intent.EXTRA_TEXT, message);

            // need this to prompts email client only
            email.setType("message/rfc822");

            startActivity(Intent.createChooser(email, "Choose an Email client :"));

        }
    });
}

3
Wie ist das besser als die Antworten, die es bereits gab, als Sie dies gepostet haben? Es sieht aus wie eine Kopie der akzeptierten Antwort, die in eine Aktivität eingeschlossen ist.
Sam

2

Andere Lösung kann sein

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.setType("plain/text");
emailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"someone@gmail.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Yo");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hi");
startActivity(emailIntent);

Angenommen, auf dem größten Teil des Android-Geräts ist die GMail-App bereits installiert.


@ PedroVarela können wir immer überprüfen, Aktivität nicht Ausnahme gefunden.
Silentsudo

1
Ja wir können. Aber Ihre Lösung ist nicht die richtige. In der Android-Dokumentation wird klar angegeben, was Sie tun müssen, um nur E-Mail-Apps in der Absichtsauswahl anzuzeigen. Sie haben geschrieben "Angenommen, auf dem größten Teil des Android-Geräts ist die Google Mail-App bereits installiert"; Was ist, wenn es sich um ein gerootetes Gerät handelt und der Benutzer den Google Mail-Client löscht? Angenommen, Sie erstellen Ihre eigene E-Mail-App. Wenn ein Benutzer eine E-Mail senden möchte, wird Ihre App nicht in dieser Liste aufgeführt. Was passiert, wenn Google Mail den Paketnamen ändert? Wirst du deine App aktualisieren?
Pedro Varela

2

Verwenden Sie dies zum Senden von E-Mails ...

boolean success = EmailIntentBuilder.from(activity)
    .to("support@example.org")
    .cc("developer@example.org")
    .subject("Error report")
    .body(buildErrorReport())
    .start();

benutze Build Gradle:

compile 'de.cketti.mailto:email-intent-builder:1.0.0'

2

Ich habe diesen Code zum Senden von E-Mails verwendet, indem ich den Standardabschnitt zum Erstellen von E-Mail-Apps direkt gestartet habe.

    Intent i = new Intent(Intent.ACTION_SENDTO);
    i.setType("message/rfc822"); 
    i.setData(Uri.parse("mailto:"));
    i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"test@gmail.com"});
    i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    i.putExtra(Intent.EXTRA_TEXT   , "body of email");
    try {
        startActivity(Intent.createChooser(i, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }

1

Diese Methode funktioniert bei mir. Es öffnet die Google Mail-App (falls installiert) und setzt mailto.

public void openGmail(Activity activity) {
    Intent emailIntent = new Intent(Intent.ACTION_VIEW);
    emailIntent.setType("text/plain");
    emailIntent.setType("message/rfc822");
    emailIntent.setData(Uri.parse("mailto:"+activity.getString(R.string.mail_to)));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, activity.getString(R.string.app_name) + " - info ");
    final PackageManager pm = activity.getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
    ResolveInfo best = null;
    for (final ResolveInfo info : matches)
        if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail"))
            best = info;
    if (best != null)
        emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
    activity.startActivity(emailIntent);
}

1
/**
 * Will start the chosen Email app
 *
 * @param context    current component context.
 * @param emails     Emails you would like to send to.
 * @param subject    The subject that will be used in the Email app.
 * @param forceGmail True - if you want to open Gmail app, False otherwise. If the Gmail
 *                   app is not installed on this device a chooser will be shown.
 */
public static void sendEmail(Context context, String[] emails, String subject, boolean forceGmail) {

    Intent i = new Intent(Intent.ACTION_SENDTO);
    i.setData(Uri.parse("mailto:"));
    i.putExtra(Intent.EXTRA_EMAIL, emails);
    i.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (forceGmail && isPackageInstalled(context, "com.google.android.gm")) {
        i.setPackage("com.google.android.gm");
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    } else {
        try {
            context.startActivity(Intent.createChooser(i, "Send mail..."));
        } catch (ActivityNotFoundException e) {
            Toast.makeText(context, "No email app is installed on your device...", Toast.LENGTH_SHORT).show();
        }
    }
}

/**
 * Check if the given app is installed on this devuice.
 *
 * @param context     current component context.
 * @param packageName The package name you would like to check.
 * @return True if this package exist, otherwise False.
 */
public static boolean isPackageInstalled(@NonNull Context context, @NonNull String packageName) {
    PackageManager pm = context.getPackageManager();
    if (pm != null) {
        try {
            pm.getPackageInfo(packageName, 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }
    return false;
}

1
 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","ebgsoldier@gmail.com", null));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Forgot Password");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Write your Pubg user name or Phone Number");
    startActivity(Intent.createChooser(emailIntent, "Send email..."));**strong text**

1

Versuche dies:

String mailto = "mailto:bob@example.org" +
    "?cc=" + "alice@example.com" +
    "&subject=" + Uri.encode(subject) +
    "&body=" + Uri.encode(bodyText);

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse(mailto));

try {
    startActivity(emailIntent);
} catch (ActivityNotFoundException e) {
    //TODO: Handle case where no email app is available
}

Der obige Code öffnet den bevorzugten E-Mail-Client des Benutzers, der mit der E-Mail gefüllt ist, die zum Senden bereit ist.

Quelle

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.