我正在尝试以编程方式向我的电子邮件发送附件。附件是我的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));
知道为什么它在这条路上不起作用?我是否遗漏了某些内容或附件是否只适用于外部存储上的文件?
答案 0 :(得分:4)
这是正确的行为。该文件位于应用程序的专用存储中,任何其他进程都无法访问。您需要先将其复制到外部存储,或者实现内容提供程序以传递文件描述符。
有关如何为文件实现ContentProvider的一个很好的示例,请参阅this project。