【发布时间】:2010-11-08 01:10:51
【问题描述】:
作为我的问题的序言,有几点需要注意。在这种情况下,我不想将所述文件存储在 sdcard 上。该文件也不能直接存储在应用程序本地文件目录中。它需要在子目录中,因此无法使用 openFileOutput() 和 MODE_WORLD_READABLE 写入文件。
该应用程序可能会下载文件小文件(如 pdf)并将它们存储在本地的子目录中。如果用户有可以打开这些文件的应用,我希望他们能够打开这些文件。
例如,这里是发送 pdf 的意图:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(path), "application/pdf");
startActivity(intent);
路径类似于:/data/data/packagename/files/subdir/example.pdf
该意图将打开一个 pdf 查看器,但查看器无法打开该文件。我认为这是一个权限问题。我在这里尝试了 Mark Murphy 的建议:http://groups.google.com/group/android-developers/browse_thread/thread/4e55d869213483a9/b7270078ac1a2744?lnk=raot of using Runtime.getRuntime().exec("chmod 755 " + fileName);,但没有任何区别。他还建议了一个内容提供程序,但如果可以的话,我想避免它,因为将这个文件转移到另一个应用程序似乎很多。
如果内容提供者是唯一的选择,我是否必须将文件保存到内容提供者,或者我是否可以在需要时仅使用内容提供者将其传递给其他应用程序?
谢谢,如果我不清楚,请告诉我。
【问题讨论】:
-
其他活动无权访问您的文件。如果需要,您必须将它们保存到 SD 卡或使用内容提供商。
标签: android file permissions android-intent local