Intent.EXTRA_EMAIL füllt das Feld An nicht aus


87

Ich versuche eine zu verwenden um eine E-Mail von meiner Bewerbung zu senden, aber das Feld An der E-Mail wird nicht ausgefüllt. Wenn ich Code hinzufüge, um den Betreff oder Text auszufüllen, funktionieren sie einwandfrei. Nur das Feld An wird nicht ausgefüllt.

Ich habe auch versucht, den Typ in "text / plain" und "text / html" zu ändern, aber ich habe das gleiche Problem. Kann mir bitte jemand helfen?

public void Email(){

    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    String recipient = getString(R.string.IntegralEmailAddress);
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL  , recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); }

Der E-Mail-Client, den ich verwenden möchte, ist Google Mail

Antworten:


213

Ich denke du gehst nicht recipientalsarray of string

es sollte so sein

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "someone@gmail.com" });

18
Android ... warum bist du so erbärmlich?
Bugs passieren am

4
hahaha, du hast mich zum Lachen gebracht +1 Million @BugsHappen .. Gründe: Es ist eine Open Source, aber die Dokumentation ist nicht 100% zufriedenstellend, Gerätehersteller modifizieren entsprechend ihren Bedürfnissen (die meisten Geräte sind billig und nutzlos), Entwickler lesen nicht "Entwickler". android.com ".
MKJParekh

4
Stellen Sie außerdem sicher, dass Sie es NICHT tun intent.putExtra(Intent.EXTRA_EMAIL, list.toArray()) , WENN NICHT funktioniert, da list.toArray () Object [] und nicht String [] erzeugt
nikib3ro

@ kape123 das funktioniert aberintent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Abtin Gramian

4

Benutze das

public void Email(){
    // use this to declare your 'recipient' string and get your email recipient from your string xml file
    Resources res = getResources();
    String recipient = getString(R.string.IntegralEmailAddress);
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    emailIntent.putExtra(Intent.EXTRA_EMAIL, recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 

``}

Dies wird funktionieren :)
Dies ist, was Android-Dokumentation über Intent.Extra_Email sagt -
Ein String-Array aller "An" -Empfänger- E-Mail-Adressen.
Sie sollten den String also richtig füttern. Weitere Informationen finden Sie hier
http://developer.android.com/guide/components/intents-common.html#Email und hier http://developer.android.com/guide/topics/resources /string-resource.html Oder verwenden Sie die Aktion ACTION_SENDTO und fügen Sie das Datenschema "mailto:" hinzu. Beispielsweise:

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);
}

2
private void callSendMeMail() {
    Intent Email = new Intent(Intent.ACTION_SEND);
    Email.setType("text/email");
    Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@gmail.com" });
    Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    startActivity(Intent.createChooser(Email, "Send mail to Developer:"));
}

Es heißt, dass keine App diese Aktion ausführen kann.
Abu Nayem

2

In Kotlin - Android

fun sendMail(
        activity: Activity,
        emailIds: Array<String>,
        subject: String,
        textMessage: String
    ) {


        val emailIntent = Intent(Intent.ACTION_SEND)
        emailIntent.type = "text/plain"
        emailIntent.putExtra(Intent.EXTRA_EMAIL, emailIds)
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
        emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage)
        emailIntent.setType("message/rfc822")
        try {
            activity.startActivity(
                Intent.createChooser(
                    emailIntent,
                    "Send email using..."
                )
            )
        } catch (ex: ActivityNotFoundException) {
            Toast.makeText(
                activity,
                "No email clients installed.",
                Toast.LENGTH_SHORT
            ).show()
        }
    }

Sie können auch [ val emailIntent = Intent(Intent.ACTION_SENDTO)] verwenden, um den direkten E-Mail-Client aufzurufen

//argument of function
val subject = "subject of you email"
val eMailMessageTxt = "Add Message here"

val eMailId1 = "emailId1@gmail.com"
val eMailId2 = "emailId2@gmail.com"
val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2)

//Calling function
sendMail(this, eMailIds, subject, eMailMessageTxt)

Ich hoffe, dieses Code-Snippet wird den Kotlin-Entwicklern helfen.


1

Einige Dinge:

1 - Sie müssen die Variable für die Aktionskonstante als ACTION_SENDTO festlegen.
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

2 - Wenn Sie möchten, dass es nur per E-Mail geöffnet wird, verwenden Sie die setData () -Methode: intentEmail.setData(Uri.parse("mailto:"));Andernfalls werden Sie aufgefordert, es als Text-, Bild- oder Audiodatei von anderen auf Ihrem Gerät vorhandenen Apps zu öffnen.

3 - Sie müssen die E-Mail-ID-Zeichenfolge als Array-Objekt und nicht nur als Zeichenfolge übergeben. Die Zeichenfolge lautet: "name@email.com" . Array-Objekt der Zeichenfolge ist: new String [] {"email1", "email2", "more_email"} .

intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
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.