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

时间:2011-10-10 08:56:31

标签: android file-io file-permissions

我想保存文件,然后向其他应用程序发出意图以打开该文件。我该如何做到这一点?

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

1 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

String extPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathPrefix = extPath + "/Android/data/" + APP_PACKAGE_ID + "/cache/";

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

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

data storage documentation中描述了更多信息。

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