我使用以下代码创建了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
标志的用途是什么?
答案 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卡)上的文件时有用,但不适用于每个应用程序正在运行的被监禁的沙箱上。
我希望这些信息有用。