发送附件不适用于内部存储文件

时间:2013-02-01 04:34:32

标签: android

我正在尝试以编程方式向我的电子邮件发送附件。附件是我的db文件。当数据库文件在SD卡上时,我能够完成它。但是当它在内部时它会一直抱怨文件没有找到

这是我的代码:

    String path = "/data/data/MyPackageName/databases/mydb.db"
    Intent email = new Intent(android.content.Intent.ACTION_SEND);

    email.setType("plain/text");
    email.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
    email.putExtra(android.content.Intent.EXTRA_TEXT, "Hiii");

    email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path));

知道为什么它在这条路上不起作用?我是否遗漏了某些内容或附件是否只适用于外部存储上的文件?

1 个答案:

答案 0 :(得分:4)

这是正确的行为。该文件位于应用程序的专用存储中,任何其他进程都无法访问。您需要先将其复制到外部存储,或者实现内容提供程序以传递文件描述符。

有关如何为文件实现ContentProvider的一个很好的示例,请参阅this project