Android - 如何保存其他应用程序可读的文件?

Jer*_*oen 5 file-io android file-permissions

我想保存一个文件,然后向其他应用程序发出意图以打开该文件。我该如何实现这个目标?

如果尝试过:openFileOutput("file.pdf", Context.MODE_WORLD_READABLE)但似乎不起作用。我应该将文件保存在应用程序文件夹之外吗?如果是这样,我如何向其传递正确的权限?

Hef*_*olf 5

你可以使用这样的东西:

String extPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathPrefix = extPath + "/Android/data/" + APP_PACKAGE_ID + "/cache/";
Run Code Online (Sandbox Code Playgroud)

将文件保存到 SD 卡,所有其他应用程序都可以访问该文件。模式Context.MODE_WORLD_READABLE足以满足此目的。该代码适用于 android 2.1,并使用建议的路径在 SD 卡上存储应用程序相关数据。从 Android 2.2 开始,如果卸载应用程序,此目录会自动删除。

您的应用需要安装到 SD 卡的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

使用openFileOutput(...)世界可读权限有点无用,因为这些文件存储在只能由应用程序本身访问的文件夹中。

数据存储文档中描述了更多信息。

请注意,如果用户通过 USB 连接设备进行文件存储访问,则外部存储器可能不可用。您应该始终首先通过 检查此条件String state = Environment.getExternalStorageState();

  • 抱歉,我的错:SD 卡没有访问权限,您存储在那里的数据始终是全局可写的。 (3认同)
  • 截至我发表评论时,Context.MODE_WORLD_READABLE 现已弃用。还有其他安全的方法可以做到这一点吗?http://stackoverflow.com/questions/13856757/android-alternative-to-the-deprecated-context-mode-world-read (3认同)