3

我正在尝试以编程方式使用我的电子邮件发送附件。附件是我的数据库文件。当数据库文件在 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));

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

4

1 回答 1

4

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

有关如何为文件实现 ContentProvider 的出色示例,请参阅此项目。

于 2013-02-01T04:38:34.923 回答