android - software - इरादों के माध्यम से ईमेल प्रोग्राम कैसे खोलें(लेकिन केवल एक ईमेल प्रोग्राम)




android system download (5)

इस विकल्प को आजमाएं:

Intent intentEmail = new Intent(Intent.ACTION_SEND);
intentEmail.setType("message/rfc822");

मैं अपने आवेदन का एक हिस्सा स्थापित करना चाहता हूं जो उपयोगकर्ताओं को किसी अन्य उपयोगकर्ता को त्वरित ईमेल भेजने की अनुमति देता है। इसे स्थापित करना बहुत मुश्किल नहीं है:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
Intent mailer = Intent.createChooser(intent, null);
startActivity(mailer);

हालांकि, समस्या यह है कि ACTION_SEND को केवल ईमेल प्रोग्राम से अधिक स्वीकार किया जाता है - उदाहरण के लिए, मेरे फोन पर फेसबुक ऐप, ट्विटर, रेडडिट मजेदार है, और यहां तक ​​कि ब्लूटूथ भी इस संदेश को भेजने के लिए व्यवहार्य विकल्प के रूप में आते हैं। संदेश इनमें से कुछ (विशेष रूप से ट्विटर) के लिए पूरी तरह से लंबा है।

क्या चयनकर्ता को केवल उन संदेशों के लिए सीमित करने का कोई तरीका है जो लंबे संदेश (जैसे ईमेल) का समर्थन करते हैं? या क्या ऐप का पता लगाने का कोई तरीका है जिसे उपयोगकर्ता ने उचित रूप से संदेश चुना है और समायोजित किया है?


एमआईएम प्रकार को सादा से संदेश में बदलने का प्रयास करें

intent.setType("text/message");

क्या आपने Intent.EXTRA_EMAIL अतिरिक्त सहित प्रयास किया है?

Intent mailer = new Intent(Intent.ACTION_SEND);
mailer.setType("text/plain");
mailer.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
mailer.putExtra(Intent.EXTRA_SUBJECT, subject);
mailer.putExtra(Intent.EXTRA_TEXT, bodyText);
startActivity(Intent.createChooser(mailer, "Send email..."));

यह उपलब्ध रिसीवर अनुप्रयोगों की सूची को प्रतिबंधित कर सकता है ...


पेंटियम 10 के लिंकिंग को कैसे काम करता है, यह जानने के सुझाव के लिए धन्यवाद, मुझे इस समस्या का एक बड़ा समाधान मिला है। असल में, आप बस "mailto:" लिंक बनाते हैं, और उसके बाद उचित इरादा कॉल करते हैं .:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("mailto:?subject=" + subject + "&body=" + body);
intent.setData(data);
startActivity(intent);

इस समाधान के कुछ दिलचस्प पहलू हैं:

  1. मैं ACTION_VIEW कार्रवाई का उपयोग कर रहा हूं क्योंकि यह "mailto:" लिंक के लिए अधिक उपयुक्त है। आप कोई विशेष कार्रवाई नहीं कर सकते हैं, लेकिन फिर आपको कुछ असंतोषजनक परिणाम मिल सकते हैं (उदाहरण के लिए, यह आपको पूछेगा कि क्या आप अपने संपर्कों में लिंक जोड़ना चाहते हैं)।

  2. चूंकि यह एक "शेयर" लिंक है, इसलिए मुझे बस कोई ईमेल पता नहीं है - भले ही यह एक मेलट लिंक है। यह काम करता हैं।

  3. इसमें कोई चयनकर्ता शामिल नहीं है। इसका कारण यह है कि उपयोगकर्ता को डिफ़ॉल्ट का लाभ उठाने देना है; अगर उन्होंने एक डिफ़ॉल्ट ईमेल प्रोग्राम सेट किया है, तो यह उन्हें सीधे ले जाएगा, चयनकर्ता को पूरी तरह से छोड़कर (जो मेरे दिमाग में अच्छा लगता है, आप अन्यथा बहस कर सकते हैं)।

निस्संदेह वहां बहुत सारी चीजें हैं जो मैं छोड़ रहा हूं (जैसे कि विषय / शरीर को सही ढंग से एन्कोड करना), लेकिन आप इसे अपने आप समझने में सक्षम होना चाहिए।


यह मेरे लिए काम किया

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.setType("vnd.android.cursor.item/email");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Email Subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "My email content");
startActivity(Intent.createChooser(emailIntent, "Send mail using..."));




android