为了引导我的问题,请注意几件事。在这种情况下,我不想将所述文件存储在SD卡上。该文件也不能直接存储在应用程序本地文件目录中。它需要位于子目录中,因此它不能使用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的建议:使用Runtime.getRuntime().exec("chmod 755 " + fileName);
的http://groups.google.com/group/android-developers/browse_thread/thread/4e55d869213483a9/b7270078ac1a2744?lnk=raot,但没有任何区别。他还建议了一个内容提供者,但是如果可以的话,我想避免它,因为将这个文件转换为另一个应用程序看起来很像。
如果内容提供者是唯一的选择,我是否必须将文件保存到内容提供者,或者我可以只使用内容提供者作为传递来在需要时将其传递给其他应用程序?
谢谢,让我知道如果我不清楚。
其他活动无权访问您的文件。如果你需要他们,你必须将他们保存到SD卡或使用内容提供商。 – Falmarri 2010-11-08 03:41:13