我想保存文件,然后向其他应用程序发出意图以打开该文件。我该如何做到这一点?
如果尝试过:openFileOutput("file.pdf", Context.MODE_WORLD_READABLE)
但似乎无效。我应该将文件保存在应用程序文件夹之外吗?如果是这样,我如何传递正确的权限?
答案 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();
检查此条件。