使用MODE_WORLD_READABLE创建的文件未通过电子邮件作为附件发送

时间:2012-06-21 09:03:32

标签: android email-attachments

我使用以下代码创建了SQLite DB:

context.openOrCreateDatabase(dbName, Context.MODE_WORLD_READABLE, null);

并尝试使用以下代码通过电子邮件将其作为附件发送:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND)
        .setType("message/rfc822")
        .putExtra(android.content.Intent.EXTRA_STREAM,
                Uri.fromFile(getDatabasePath(dbName)));
startActivity(Intent.createChooser(emailIntent, null));

这将打开带有附件图标的GMail撰写活动。但收件人没有收到附件。

这是asked before。但看起来除了将db文件复制到SD卡之外没有其他解决方案。

我的问题是:如果像GMail这样的其他应用无法读取该文件,MODE_WORLD_READABLE标志的用途是什么?

1 个答案:

答案 0 :(得分:0)

假设我们有2个应用app_1和app_2 在android文件系统上,这两个应用程序位于/ data / data / app_1和/ data / data / app_2上 其中app_1是“用户”app_1

如果在/ data / data上运行ls,你会看到如下内容: drwxr-x - x app_1 app_1 drwxr-x - x app_2 app_2

MODE_WORLD_READABLE相当于Unix命令a + r [file] 但是,这不允许其他用户/应用程序访问该文件,因为目录权限不允许app_1访问app_2文件夹上的文件。

实际上,app_1甚至无法使用ls / data / data来查看所有其他目录的列表。 最重要的是,MODE_WORLD_READBLE仅在您处理共享存储(如SD卡)上的文件时有用,但不适用于每个应用程序正在运行的被监禁的沙箱上。

我希望这些信息有用。