我的应用程序使用意图方法向用户发送电子邮件,这是导出Excel电子表格数据(由JExcell API创建)的便捷方式。
该文件包含在名为记录的文件夹中的SD卡上。
我尝试发送的文件是 measurments.xls。
我在代码中测试了在发送之前是否存在文件。电子邮件编辑器显示附件,但是当我发送然后接收电子邮件时,附件不在那里。
但是,如果我将excel文件替换为png图像,则会收到附件。那么是什么呢?
下面是我用来发送电子邮件的代码,它只是一个类中的一个短暂的静态方法。
public static void sendEmailWithAttachment(Context ctx, String to,String subject, String message, String fileAndLocation)
{
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {to});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
File file = new File(fileAndLocation);
// File file = getFileStreamPath();
if (file.exists())
{
Log.v("Farmgraze", "Email file_exists!" );
}
else
{
Log.v("Farmgraze", "Email file does not exist!" );
}
Log.v("FarmGraze", "SEND EMAIL FileUri=" + Uri.parse("file:/"+ fileAndLocation));
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+ fileAndLocation));
ctx.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}//end method
那么接收xls文件需要做什么?更改方法代码第二行中的mime类型?如果是这样的话。任何有用的建议将不胜感激。
感谢阅读。
A.
答案 0 :(得分:6)
好的人只是为这个问题添加了闭包,我找到了解决方案。
问题是发送到URI的文件路径String需要有三个正斜杠。
如:
file:///sdcard/somefolder/some_file.xls.
同样对于excel文档,需要按如下方式设置类型:
emailIntent.setType("application/excel");
所以这个问题是双管齐下的。我通过this thread了解了三个斜杠解决方案,但由于它不起作用,认为问题出在其他地方。
此外,我通过this webpage了解了正确的mime类型,列出了所有支持的mime类型,对其他读者可能非常有用。
感谢您阅读并对我现在解决的小问题感兴趣。
答案 1 :(得分:0)
我认为问题可能出在你的mime-type上。试试这个:
MimeTypeMap mime = MimeTypeMap.getSingleton();
String mimeTypeForXLSFile = mime.getMimeTypeFromExtension(".xls");
emailIntent.setType(mimeTypeForXLSFile);