我有以下代码尝试使用默认阅读器打开文件:
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);
问题是将文件复制到共享文件夹并不是一个令人满意的解决方案,因为我希望它保留在我的初始应用程序文件夹中。
答案 0 :(得分:0)
在有权访问该文件的活动中,您可能想要执行
file.setReadable(true, false);
真实是为了可读性,错误是“仅限所有者”。
既然您可以找到它,但却没有阅读它,那么看起来缺少此权限就是问题。