1

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

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

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

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

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

intent.addFlag(Intent.FLAG_GRANT_READ_URI_PERMISSION);

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

4

1 回答 1

0

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

file.setReadable(true, false);

true 是为了可读性, false 是为了“仅所有者”。

由于您可以找到它,但没有阅读它,因此缺少此权限似乎是问题所在。

于 2013-02-11T22:56:53.253 回答