2

我正在尝试发送一封带有附件的电子邮件,该附件保存在模拟器上的 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.

将感谢您的帮助

4

1 回答 1

1

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

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

永远不要使用硬编码的路径,永远不要假设你在根目录下 2 层,永远不要像在显示的代码中那样遍历目录。使用Environment.getExternalStorageDirectory()获取外部存储(根本不需要是 SD 卡)根并附加您的相对路径以获得正确和有效的位置。

于 2013-01-20T18:12:07.213 回答