2011-10-10 53 views
4

我想保存一个文件,然后激发其他应用程序的意图来打开该文件。我该如何做到这一点?Android - 如何保存其他应用程序可读的文件?

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

回答

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

+1

感谢您的快速回答,但是当我不使用'openFileOutput'时,如何将文件标记为'Context.MODE_WORL_READABLE'?因为所有的Stream类都不接受这个参数,所以android文档让我有点无知。我必须在这里丢失一些东西...... – Jeroen

+3

对不起,我的错:没有SD卡的访问权限,您存储在那里的数据总是世界可写的。 – HefferWolf

+0

什么时候没有SD卡的权限呢? – Jeroen

相关问题