我在我的应用中设置了电子邮件意图。我还附上了一个二进制文件。当电子邮件编辑器打开时,它会显示多少字节。但是当我收到电子邮件时,它是Zero Bytes!
我在一个单独的项目中完成了这项工作,之前它已经工作,所以我只是将该代码复制到新项目中。
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字节)
,收到的附件也是零字节------- UPDATE ---------
所以我创建了另一个项目并测试了下面的代码。它发送附带附件的电子邮件。但是当我在项目中使用相同的代码时,收到的电子邮件是零字节。您可以看到我甚至测试过文件对象是否为null并且在运行时它不为null。
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发送电子邮件。
答案 0 :(得分:0)
终于明白了。
首先当然要确保文件是MODE_WORLD_READABLE。
第二个Gmail似乎无法访问内部存储或应用内的文件。另外,在这里讨论http://code.google.com/p/android/issues/detail?id=18872
它设法使用outlook发送和附件。