我有以下代码尝试使用默认阅读器打开文件:
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);
问题是对我来说将文件复制到共享文件夹并不是一个令人满意的解决方案,因为我希望它保留在我的初始应用程序文件夹中。