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

在android中通过电子邮件发送私人文件,android,Android,我想用电子邮件发送一个文本文件。 但问题是,我希望这个文件对我的应用程序是私有的,并且我只想对电子邮件应用程序授予读取权限 因此,我使用代码: 要获取文件路径,请执行以下操作: logFilePath=activity.getDirmy_logs,Context.MODE_PRIVATE+/log.txt 要将文件添加到电子邮件,请执行以下操作: Uri logUri = Uri.fromFile(new File(logFilePath)); mail.putExtra

我想用电子邮件发送一个文本文件。 但问题是,我希望这个文件对我的应用程序是私有的,并且我只想对电子邮件应用程序授予读取权限

因此,我使用代码:

要获取文件路径,请执行以下操作:

logFilePath=activity.getDirmy_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);
因为我认为可能是intent-world-read标志只影响数据字段,但结果是一样的

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

activity.getDir("my_logs", Context.MODE_WORLD_READABLE) + "/log.txt";
但没有任何效果

它也不起作用

唯一有效的选择是

activity.getExternalCacheDir() + "/log.txt";
因此,正如我所看到的,无论我如何尝试,内部内存中的文件对于电子邮件应用程序都是不可读的

有没有办法让它可读


或者有没有办法在外部内存中创建私有目录/文件?

在这种情况下,我们应该使用内容提供商。有一个用于共享文件的预定义内容提供商,非常容易实现:

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