在android中通过电子邮件发送私人文件

时间:2014-02-07 08:12:31

标签: android

我想在电子邮件信件中发送文本文件。 但问题是我希望这个文件对我的应用程序是私有的,我想只为电子邮件应用程序提供读取权限。

所以,我使用代码:

获取文件路径:

logFilePath = activity.getDir(“my_logs”,Context.MODE_PRIVATE)+“/ log.txt”;

将文件添加到电子邮件中:

Uri logUri = Uri.fromFile(new File(logFilePath));
            mail.putExtra(android.content.Intent.EXTRA_STREAM, logUri);
            mail.setType("text/plain");

该文件已创建,我可以看到它附在信件上,当我发送时,但是当我收到信件时没有附件。

我尝试了这个选项:

mail.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

activity.grantUriPermission("com.google.android.gm", logUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);

但结果是一样的。我试着

mail.setData(logUri);

因为我认为可能是意图世界读取标志仅影响数据字段,但结果是相同的。

然后我尝试更改目录权限:

activity.getDir("my_logs", Context.MODE_WORLD_READABLE) + "/log.txt";

但它没有效果。

activity.getCacheDir() + "/log.txt";

也不行。

唯一有效的选择是

activity.getExternalCacheDir() + "/log.txt";

因此,正如我所看到的,无论我如何尝试,内部存储器中的文件都无法读取电子邮件应用程序。

有没有办法让它可读?

或者可能有办法在外部存储器中创建私人目录/文件?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我们应该使用内容提供商。有一个预定义的内容提供程序,用于共享文件,非常容易实现:http://developer.android.com/reference/android/support/v4/content/FileProvider.html