在android中发送带附件的电子邮件

时间:2013-01-20 18:06:36

标签: android email android-intent email-attachments

我正在尝试发送一封带有附件的电子邮件,该附件在模拟器上保存在SDCard上,但问题是它发送的电子邮件中没有附件。请告诉我哪里出错了

这是代码

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
                emailIntent.setType("text/plain");
                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] 
                {"djkgotsod@gmail.com"}); 
                emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
                "Dear Sir"); 
                emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
                "Im doing Android");                 
                Log.v(getClass().getSimpleName(), "sPhotoUri=" + Uri.parse("/mnt/sdcard/../.."+getFilesDir()+"/"+myfile));

                emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("/mnt/sdcard/../.."+getFilesDir()+"/"+myfile));
                startActivity(Intent.createChooser(emailIntent, "Send mail..."));

这是我的日志猫

01-20 17:59:04.927: E/Trace(31078): error opening trace file: No such file or directory (2)
01-20 17:59:06.117: D/gralloc_goldfish(31078): Emulator without GPU emulation detected.
01-20 17:59:08.917: V/Main(31078): sPhotoUri=/mnt/sdcard/../../data/data/com.example.emailandroid/files//mnt/sdcard/myfile.csv
01-20 17:59:10.077: I/Choreographer(31078): Skipped 112 frames!  The application may be doing too much work on its main thread.
01-20 17:59:15.267: I/Choreographer(31078): Skipped 30 frames!  The application may be doing too much work on its main thread.

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是因为你的附属路径不正确。你的日志清楚地指出你做错了什么:

/mnt/sdcard/../../data/data/com.example.emailandroid/files//mnt/sdcard/myfile.csv

从不使用硬编码路径,从不,因为您在根目录下方有两个级别,从不遍历目录,就像您在显示的代码中一样。使用Environment.getExternalStorageDirectory()获取外部存储空间(根本不需要SD卡)并添加相对路径以获取正确有效的位置。