Intent.EXTRA_EMAIL फ़ील्ड को आबाद नहीं कर रहा है


89

मैं एक का उपयोग करने की कोशिश कर रहा हूँ मेरे आवेदन से एक ईमेल भेजने के लिए, लेकिन ईमेल के क्षेत्र में आबाद नहीं होगा। यदि मैं विषय या पाठ में भरने के लिए कोड जोड़ता हूं, तो वे ठीक काम करते हैं। बस टू फील्ड आबाद नहीं होगा।

मैंने "टेक्स्ट / प्लेन" और "टेक्स्ट / html" टाइप बदलने की भी कोशिश की है, लेकिन मुझे भी यही समस्या है। क्या कोई कृपया मदद कर सकता है?

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

मैं जिस ईमेल क्लाइंट का उपयोग करने का प्रयास कर रहा हूं वह जीमेल है

जवाबों:


218

मुझे लगता है कि आप गुजर नहीं कर रहे हैं recipientके रूप मेंarray of string

यह जैसा होना चाहिए

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

21
Android ... आप इतने दयनीय क्यों हैं?
बग्स हैपन

4
हाहाहा, आपने मुझे +1 मिलियन @BugsHappen को हँसाया .. कारण: इसका एक खुला स्रोत है लेकिन प्रलेखन 100% संतोषजनक नहीं है, डिवाइस निर्माता अपनी आवश्यकताओं के अनुसार संशोधित करते हैं (अधिकांश डिवाइस सस्ते और बेकार हैं), डेवलपर्स "डेवलपर नहीं पढ़ते हैं।" android.com "।
MKJParekh

4
यह भी सुनिश्चित करें कि आप कर रहे हैं नहीं कर intent.putExtra(Intent.EXTRA_EMAIL, list.toArray()) यह नहीं काम के बाद से list.toArray () का उत्पादन वस्तु [] और नहीं String []
nikib3ro

@ kape123 यह हालांकि काम करता हैintent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Abtin ग्रामियन

4

इसे इस्तेमाल करो

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...")); 

``}

यह काम करेगा :)
यह वही है जो Android प्रलेखन Intent.Extra_Email के बारे में कहता है
- सभी "स्ट्रिंग" प्राप्तकर्ता ईमेल पते।
तो आपको स्ट्रिंग को ठीक से खिलाना चाहिए आप यहाँ पर अधिक पढ़ सकते हैं
http://developer.android.com/guide/compents/intents-common.html#Email और यहाँ http://developer.android.com/guide/topics/resources /string-resource.html या ACTION_SENDTO कार्रवाई का उपयोग करें और "mailto:" डेटा योजना शामिल करें। उदाहरण के लिए:

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

3

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

इसके अलावा आप val emailIntent = Intent(Intent.ACTION_SENDTO)डायरेक्ट ईमेल क्लाइंट को इनवाइट करने के लिए [ ] का उपयोग कर सकते हैं

//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)

मुझे उम्मीद है कि यह कोड स्निपेट कोटलिन डेवलपर्स को मदद करेगा।


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

यह कह रहा है कि कोई भी ऐप इस क्रिया को नहीं कर सकता है।
अबू नईम

1

कुछ बातें:

1 - आपको कार्रवाई निरंतर चर को ACTION_SENDTO के रूप में सेट करने की आवश्यकता है।
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

2 - यदि आप चाहते हैं कि इसे केवल मेल द्वारा खोला जाए तो सेटडेटा () विधि का उपयोग करें: intentEmail.setData(Uri.parse("mailto:"));अन्यथा यह आपको अपने डिवाइस पर मौजूद अन्य ऐप द्वारा टेक्स्ट, इमेज, ऑडियो फ़ाइल के रूप में खोलने के लिए कहेगा।

3 - आपको एक ईमेल ऑब्जेक्ट के रूप में ईमेल आईडी स्ट्रिंग को पास करने की आवश्यकता है, न कि केवल स्ट्रिंग के रूप में। स्ट्रिंग है: "name@email.com" । स्ट्रिंग का ऐरे ऑब्जेक्ट है: नया स्ट्रिंग [] {"email1", "email2", "more_email"}

intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.