मेरा एप्लिकेशन उपयोगकर्ताओं को फ़ाइलों को बनाने और संशोधित करने की अनुमति देता है। मैं उन्हें एक ईमेल संलग्नक के रूप में एक फाइल भेजने में सक्षम होना चाहता हूँ। इसलिए, मुझे पहले एक अस्थायी फ़ाइल बनाने और लिखने की आवश्यकता है, जिसे मैं ईमेल से जोड़ता हूं। और फिर जब मैं ईमेल प्रोग्राम समाप्त करता हूं तो मैं अस्थायी फ़ाइल को हटाना चाहता हूं। दुर्भाग्यवश, जैसे ही उपयोगकर्ता "भेज" पर क्लिक करता है, जीमेल ऐप परिणाम कोड के साथ प्रतिक्रिया देता है; और यदि परिणाम कोड प्राप्त होने पर मैं फ़ाइल को हटा देता हूं, तो कोई अनुलग्नक नहीं भेजा जाता है।एंड्रॉइड: मेरे आवेदन से अनुलग्नक के साथ ईमेल भेजने में समस्या
यह संभव है कि कुछ और गलत हो रहा है और अनुलग्नक किसी अन्य कारण से नहीं भेजा गया है, लेकिन मुझे पूरा यकीन है कि मेरा मूल्यांकन सही है क्योंकि अगर मैं mEmailTmpFile.delete()
कॉल पर टिप्पणी करता हूं तो नीचे कोड ठीक से काम करता है। अगर मैं mEmailTmpFile.delete()
से पहले Thread.sleep(4000)
की तरह कुछ अवांछनीय कुछ करता हूं तो यह ठीक काम करता है।
क्या ईमेल भेजते समय अधिसूचित होने के लिए वैसे भी है? या किसी अन्य सुझाव के लिए कि मुझे इसके आसपास कैसे काम करना चाहिए?
//send an email...
File externalStorage = Environment.getExternalStorageDirectory();
String sdcardPath = externalStorage.getAbsolutePath();
mEmailTmpFile = new File(sdcardPath + "/" + name);
//do some other to ensure unqiueness and then write to the file...
//all done writing, send email
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("application/zip");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, name);
sendIntent.putExtra(Intent.EXTRA_TEXT, "File attached.");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ mEmailTmpFile.getPath()));
startActivityForResult(Intent.createChooser(sendIntent, "Email"), REQUESTCODE_EMAIL);
public synchronized void onActivityResult(int reqCode, int resultCode, Intent data)
{
if (reqCode == REQUESTCODE_EMAIL)
{
mEmailTmpFile.delete();
}
}
[इस उत्तर] के अनुसार नहीं (http://stackoverflow.com/questions/5471217/trivial-get-confirmation-of-email-sent-in-android/5471463#5471463)। – bzlm