2015-03-02 8 views
10

मैं एक बटन को कार्यान्वित करना चाहता हूं जो इसे दबाकर डिफ़ॉल्ट ईमेल क्लाइंट को अनुलग्नक फ़ाइल के साथ खोल देगा।Android पर प्रोग्रामेटिक रूप से अनुलग्नक के साथ एक ईमेल भेजना

मैं this का अनुसरण कर रहा हूं, लेकिन शुरुआत एक्टिविटी पर एक त्रुटि संदेश प्राप्त कर रहा हूं, कह रहा हूं कि यह एक गतिविधि परम की उम्मीद कर रहा है जबकि मैं इसे मंशा दे रहा हूं। मैं एपीआई 21 और एंड्रॉइड स्टूडियो 1.1.0 का उपयोग कर रहा हूं, तो शायद लिंक में दिए गए उत्तर में टिप्पणी के साथ इसका कुछ संबंध है?

यह मेरा चौथा दिन है क्योंकि एंड्रॉइड डेवलपर इतनी खेद है कि अगर मुझे कुछ मूलभूत याद आ रही है।

public void sendFileToEmail(File f){ 

    String subject = "Lap times"; 
    ArrayList<Uri> attachments = new ArrayList<Uri>(); 
    attachments.add(Uri.fromFile(f)); 
    Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachments); 
    intent.setClassName("com.android.email", "com.android.mail.compose.ComposeActivity"); 

    try { 
     startActivity(intent); 
    } catch (ActivityNotFoundException e) { 
     e.printStackTrace(); 
    } 
+0

अगर यह आपके लिए काम करता है तो मेरा जवाब स्वीकार करें। ताकि आप इस सवाल से एसओएफ –

उत्तर

17

मुझे लगता है कि आपकी समस्या यह है कि आप सही फ़ाइल पथ का उपयोग नहीं कर रहे हैं:

यहाँ मेरी कोड है।

मेरे लिए निम्नलिखित काम करता है:

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("text/plain"); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject here"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "body text"); 
File root = Environment.getExternalStorageDirectory(); 
String pathToMyAttachedFile = "temp/attachement.xml"; 
File file = new File(root, pathToMyAttachedFile); 
if (!file.exists() || !file.canRead()) { 
return; 
} 
Uri uri = Uri.fromFile(file); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider")); 

तुम भी

नीचे
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

में उत्तर दिए गए प्रश्न सूची से बच सकें। फ़ाइल फ़ंक्शन के लिए एक पैरामीटर है इसलिए मुझे नहीं लगता कि यह समस्या कैसे हो सकती है। –

+0

फ़ाइल केवल एक पैरामीटर है, लेकिन आपको यह जांचना होगा कि यह उपलब्ध है या नहीं। और आपको फ़ाइलों को पढ़ने के लिए बाहरी संग्रहण अनुमति को पढ़ने की आवश्यकता है। –

+1

यह काम कर रहा है .. बहुत बहुत धन्यवाद .. :) – Kushal

2

कोशिश का उपयोग करने के this.It काम कर रहा है ...

तरह मालसूची फ़ाइल के माध्यम से उपयोगकर्ता को अनुमति देनी होगी
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("*/*"); 

        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(listVideos.get(position).getVideoPath())));//path of video 
        startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

धन्यवाद

संबंधित मुद्दे