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

标签 android file-io file-permissions

我想保存一个文件,然后向另一个应用程序发送一个 intent 以打开该文件。我该如何实现?

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

最佳答案

你可以这样使用:

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(); 检查此条件。

关于Android - 如何保存其他应用程序可读的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710486/

相关文章:

c - 哪些事件会导致 ferror 返回非零值?

sockets - MongoDB - 套接字 :/tmp/mongodb-27017. socks 的权限被拒绝

c - C中的文件创建权限

android - 纸迹设置

android - 使用插件 Crosswalk Intel XDK

android - 如何使图片显示在屏幕上,几秒钟后自行删除?

java - 创建、写入和读取文件 java

java - 如何知道另一侧的套接字何时关闭

c - 用模数在 C 中移动字符,输出到文件在一个输入上产生不受支持的文件格式,在另一个输入上产生 txt 文件

c# - exe 文件无法从 IIS 创建 txt 文件