将PDF文件附加到app的电子邮件中

时间:2012-09-13 12:07:20

标签: java android

我正在开发android并尝试发送附带文件的电子邮件,但收到以下错误。

  

android.content.ActivityNotFoundException:找不到要处理的Activity   意图{act = android.intent.action.SENDTO   dat = file://assets/Cards/myfile.pdf typ = Applications / pdf flg = 0x10000000   (有额外的)}

我对Android dev非常新,所以我有点失去了我需要做的事情。以下是我目前正在尝试的内容

Intent intent = new Intent(Intent.ACTION_SENDTO ); // it's not ACTION_SEND
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Card Set "));
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.setData(Uri.parse("mailto:"));
intent.setDataAndType(Uri.parse("file://assets/Cards/" + "myfile.pdf"),
                                                          "Applications/pdf");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
activity.startActivity(intent);

我可以在不附加文件的情​​况下创建和发送电子邮件。任何关于我应该如何正确附加文件的帮助都将非常感谢

2 个答案:

答案 0 :(得分:1)

好的,感谢Kartik的链接,我设法找到了附加文件的正确方法(以及一种工作方式)。 搜索后我发现这是为了说明如何将文件存储到外部存储器 http://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory%28java.lang.String%29

所以我使用此页面上的修改后的createExternalStoragePublicPicture()写入内存,然后执行以下操作

createExternalStoragePublicPicture();
File path = Environment.getExternalStoragePublicDirectory(
                                                Environment.DIRECTORY_PICTURES);
                                        File file = new File(path, "cards_01.pdf");
Intent intent = new Intent(Intent.ACTION_SEND ,Uri.parse("mailto:")); // it's not ACTION_SEND
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Card Set ");
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this will make such that when user returns to your app, your app is displayed, instead of the email app.
activity.startActivity(intent);

上面的链接显示了如何删除文件,并说明如何将它们放在正确的文件夹中以避免覆盖其他文件。 希望这可以帮助其他任何有同样问题的人

答案 1 :(得分:0)

我认为this example mi8可以帮助你的方案:)