3

我的应用程序使用intent方法向用户发送电子邮件,作为导出 Excel 电子表格数据(由JExcell API创建)的便捷方式。

该文件包含在 SD 卡上名为records的文件夹中。

我尝试发送的文件是调用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.
4

2 回答 2

7

好吧,伙计们只是为了解决这个问题,我找到了解决方案。

问题是发送到 URI 的文件路径字符串需要三个正斜杠。

如:

file:///sdcard/somefolder/some_file.xls.

同样对于 excel 文档,需要按如下方式设置类型:

emailIntent.setType("application/excel");

所以问题是一个两管齐下的问题。我通过这个线程知道了三个斜线解决方案,但由于它不起作用,我认为问题出在其他地方。

此外,我通过此网页了解了正确的 mime 类型,该网页列出了所有受支持的 mime 类型,并且可能对其他读者非常有用。

因此,感谢您阅读并关注我现在解决的小问题。

于 2012-05-09T19:18:18.710 回答
0

我认为问题可能与您的 mime 类型有关。试试这个:

MimeTypeMap mime = MimeTypeMap.getSingleton();     
String mimeTypeForXLSFile = mime.getMimeTypeFromExtension(".xls");

emailIntent.setType(mimeTypeForXLSFile);
于 2012-05-08T16:19:11.793 回答