【发布时间】:2014-12-22 04:15:40
【问题描述】:
我的应用程序将文件存储在其内部存储目录中(/Android/data/com.mycompany.myapp/files,由 getFilesDir() 返回),我希望允许用户直接从文件管理中访问这些文件移动设备上的应用程序或 Android 文件传输桌面应用程序。
Storage Options developer guide 说:
默认情况下,保存到内部存储的文件对您的应用程序是私有的,其他应用程序无法访问它们(用户也不能)。
“默认”意味着我可以更改默认权限以允许用户访问这些文件,但我找不到任何有关如何执行此操作的文档。目前,当我使用文件管理应用浏览 /Android/data 目录时,com.mycompany.myapp 目录处于隐藏状态。
我目前正在像这样保存文件数据:
String fileName = "myfile.jpg";
String filePath = getFilesDir() + File.separator + fileName;
FileOutputStream fileStream = new FileOutputStream(filePath);
fileData.writeTo(fileStream); // fileData is a ByteArrayOutputStream
fileStream.close();
我尝试将单个文件的权限设置为全球可读,但这并没有使目录可见:
FileOutputStream fileStream = this.app.openFileOutput(fileName, Context.MODE_WORLD_READABLE);
我还检查了 AndroidManifest 文件的文档,但没有看到任何内容。有谁知道我该怎么做?
【问题讨论】:
-
我想知道您为什么要将文件存储在内部存储而不是外部存储中?
-
我希望文件与应用程序紧密连接,这样如果应用程序被删除,文件也会随之删除。而且在大多数情况下,用户不需要查看这些文件,因此将它们保存在 com.mycompany.myapp 目录中似乎是最干净的。但在某些情况下,用户直接访问这些文件会很方便。特别是,将一批文件添加到应用程序可能比通过应用程序界面进行拖放操作更容易。
-
如果用户有root权限,用户可以访问内部存储。
-
是的,但我不希望用户必须 root 他们的设备才能以这种方式访问他们的文件。其他应用似乎将文件暴露给普通用户,我也想这样做。
标签: android file-permissions fileoutputstream