3

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

android.content.ActivityNotFoundException:未找到处理 Intent 的 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);

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

4

2 回答 2

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);

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

于 2012-09-13T15:20:49.060 回答
0

我认为这个例子mi8 帮助你的场景:)

于 2012-09-13T12:12:26.570 回答