0

我在我的应用程序中设置了电子邮件意图。我还附上了一个二进制文件。当电子邮件编辑器打开时,它会显示多少字节。但是当我收到电子邮件时,它是零字节!

我已经在一个单独的项目中完成了这项工作,并且它之前工作过,所以我只是将该代码复制到新项目中。

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("application/octet-stream");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "" });
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "message here");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///data/data/com.example.app/files/filename.extension"));

我已经在姜饼和果冻豆上进行了测试。我使用了设备的默认电子邮件编辑器(Galaxy Y 和 HTC One)。

即使电子邮件编辑器显示一些字节(即 306 字节),接收到的附件也是零字节

- - - -更新 - - - - -

所以我创建了另一个项目并测试了下面的代码。它发送带有附件的电子邮件。但是当我在我的项目中使用相同的代码时,收到的电子邮件是零字节的。你可以看到我什至测试了文件对象是否为空并且在运行时它不为空。

File file = new File(File.getFilePath(context, "myfile.code"));
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "" });
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Blah...blah...");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "File sent");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); //I also used file:///data/data/com.example.emailfile/files/myfile.code and didn't work

if(file == null){
Log.d("----FILE----", "NULL");
}else{
Log.d("----FILE----", "Not Null");
}

这让我发疯......我在项目中所做的任何设置或设置都可以防止附件?

顺便说一句,正在运行的活动只有单选按钮和一个用于调用电子邮件意图的按钮。我正在使用 gmail 或 Outlook 发送电子邮件。

4

1 回答 1

0

终于想通了。

首先当然要确保文件是 MODE_WORLD_READABLE。

第二个 Gmail 似乎无法访问应用程序中的内部存储或文件。另外,在这里讨论http://code.google.com/p/android/issues/detail?id=18872

它设法使用 Outlook 发送和附件。

于 2013-09-05T15:40:48.100 回答