打开另一个活动位于应用程序目录中的文档

时间:2013-02-11 10:30:05

标签: java android android-intent

我有以下代码尝试使用默认阅读器打开文件:

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addFlag(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// type can be "application/msword" or "application/pdf"
intent.setDataAndType(Uri.fromFile(file), type);
activity.startActivity(intent);

文件位于应用程序文件夹中的Android设备上:

/data/data/air.com.foo.foo/com.foo.foo/Local Store/folder1/file.ppt

问题是已启动的活动无法找到该文件。我在调用者代码中检查了文件是否存在,所以这不是问题。

此外,如果我将文件从应用程序文件夹复制到应用程序共享的文件夹(在SD卡上),则活动会找到该文件。

我不明白为什么它失败了,因为我添加了:

intent.addFlag(Intent.FLAG_GRANT_READ_URI_PERMISSION);

问题是将文件复制到共享文件夹并不是一个令人满意的解决方案,因为我希望它保留在我的初始应用程序文件夹中。

1 个答案:

答案 0 :(得分:0)

在有权访问该文件的活动中,您可能想要执行

file.setReadable(true, false);

真实是为了可读性,错误是“仅限所有者”。

既然您可以找到它,但却没有阅读它,那么看起来缺少此权限就是问题。