मैं अपने ऐप के भीतर उपयोग किए जाने वाले SQLite डेटाबेस को बैकअप के रूप में ईमेल करने में सक्षम होने की उम्मीद कर रहा हूं जो उपयोगकर्ता कर सकता है। मेरा वर्तमान कोड नीचे है, डेटाबेस ईमेल इरादे में अनुलग्नक के रूप में दिखाई देता है और ईमेल भेज देगा, लेकिन अनुलग्नक नहीं भेजा जाता है।

File file = new File(Environment.getDataDirectory(), "/data/com.app/databases/databaseName");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{""});
intent.putExtra(Intent.EXTRA_SUBJECT, "Backup");
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.setType("application/octet-stream");
intent.putExtra(Intent.EXTRA_STREAM, file.toURI());
startActivity(Intent.createChooser(intent, "Send Email"));
7
user444707 7 अगस्त 2011, 14:33

3 जवाब

सबसे बढ़िया उत्तर

मुझे याद है कि मुझे कुछ समय पहले यह सटीक समस्या थी। मुझे यकीन नहीं है कि मैंने इसे ठीक करने के लिए क्या किया, लेकिन मेरा कामकाजी कोड ऐसा कुछ दिखता है ...

File root = Environment.getExternalStorageDirectory();
String fileName = "foo.txt";
  if (root.canWrite()) {
    attachment = new File(root, fileName);
  }
email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachment));
startActivity(Intent.createChooser(email, "Send Email"));

मुझे याद है कि चूंकि मैं भंडारण के लिए एसडी कार्ड का उपयोग कर रहा था, अगर मैं अभी भी यूएसबी के माध्यम से अपने कंप्यूटर में प्लग किया गया था (क्योंकि यह एसडी कार्ड को माउंट और व्यस्त रखता है) तो यह मेरा अटैचमेंट नहीं भेजेगा। एक बार जब मैंने USB कनेक्शन को अनप्लग कर दिया, तो चीजें अच्छी तरह से काम कर गईं।

3
dfetter88 7 अगस्त 2011, 20:24

इसे ईमेल करने का प्रयास करने से पहले अपने डेटाबेस को एसडी कार्ड में निर्यात करें। आप अपने एप्लिकेशन के डेटा/डेटा फ़ोल्डर के भीतर से अटैचमेंट नहीं जोड़ सकते। वे फ़ाइलें आपके आवेदन के लिए निजी हैं।

4
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 8 अगस्त 2011, 18:53

यह लिंक देखें: http://www.openintents.org/en/node/121 आपको यूआरआई पास करने की आवश्यकता है

समाधान है:

फाइलों को संलग्न करना होगा

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mysong.mp3"));

आपको अतिरिक्त / फ़ाइल में: /// (स्टैक ओवरफ़्लो पोस्ट में अनुपलब्ध) की आवश्यकता है अन्यथा GMail फ़ाइल पथ को गलत बताते हुए भेजने से ठीक पहले अनुलग्नक को छोड़ देता है।

तो आपको अतिरिक्त / फ़ाइल में चाहिए और इसे गिराया नहीं गया .... उम्मीद है कि यह मदद करता है

0
James Skemp 25 अक्टूबर 2014, 18:10