android - 如何通过 Intent 在另一个应用程序中打开本地应用程序文件?

标签 android file permissions android-intent local

作为我的问题的序言,有几点需要注意。在这种情况下,我不想将所述文件存储在 SD 卡上。该文件也不能直接存储在应用程序本地文件目录中。它需要在子目录中,因此它不能使用 openFileOutput() 和 MODE_WORLD_READABLE 写入文件。

该应用程序可能会下载 pdf 等小文件,并将它们存储在本地的子目录中。如果用户有可以打开这些文件的应用程序,我希望能够让他们打开这些文件。

例如,这里是发送 pdf 的 Intent :

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(path), "application/pdf");
startActivity(intent);

路径类似于:/data/data/packagename/files/subdir/example.pdf

该 Intent 将打开 pdf 查看器,但查看器无法打开该文件。我认为这是一个权限问题。我在这里尝试了 Mark Murphy 的建议:http://groups.google.com/group/android-developers/browse_thread/thread/4e55d869213483a9/b7270078ac1a2744?lnk=raot使用 Runtime.getRuntime().exec("chmod 755 "+ fileName); 但它没有任何区别。他还建议使用 Content Provider,但如果可以的话,我想避免使用它,因为将此文件转移到另一个应用程序似乎很麻烦。

如果内容提供者是唯一的选择,我是否必须将文件保存到内容提供者,或者我是否可以仅使用内容提供者作为传递,以便在我需要时将其传送到其他应用程序?

谢谢,如果我不清楚,请告诉我。

最佳答案

我还尝试了您提到的所有选项(以及更多选项),内容提供商是唯一适合我的方法。我不太确定“将文件保存到内容提供者”是什么意思,但实际上您不需要数据库中的任何内容来让提供者将文件提供给其他应用程序。

关于android - 如何通过 Intent 在另一个应用程序中打开本地应用程序文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120618/

相关文章:

c# - .net 移动文件失去原始和父文件夹安全权限

android - ACCESS_COARSE_LOCATION android 权限问题

java - Android - 从 ProGuard 中排除库(jar)类

android - 我们如何防止服务被操作系统杀死?

android - 是否可以通过编程方式启用 "Show layout bounds"开发人员选项?

c++ - ifstream 运算符 >> uint16_t 设置 failbit

c++ - popen() 将执行命令的输出写入 cout

c++ - 制作空白输出文件的程序

php - shell_exec 不适用于 .sh 脚本

Android "gen"文件夹和 SVN - 宿敌