【发布时间】:2020-07-10 14:23:11
【问题描述】:
在我的应用程序中,我从任何其他可以共享 pdf 的应用程序中收到了 pdf 文件的 Uri。
Uri uri = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
无论如何,我无法完全使用此 Uri,因为它来自我的应用程序外部的 FileProvider。 例如,当我尝试创建 FileDescriptor 时:
ParcelFileDescriptor fd = context.getContentResolver().openFileDescriptor(uri, "r");
我收到此错误:
W/System.err: java.lang.SecurityException: Permission Denial: opening provider androidx.core.content.FileProvider from ProcessRecord{...} (pid=23606, uid=10525) that is not exported from UID 10123
真的有必要获取文件路径,复制文件,获取新的Uri吗? 或者我可以通过某种方式简单地管理原始 Uri ?
【问题讨论】:
-
请显示提供 uri 的应用程序执行的完整意图。如果一切正常,您应该能够在接收端直接打开输入流。试试:
InputStream is = getContentResolver().openInputStream(uri); -
is really necessary get the file path,。不。而且你一开始就不应该做这么讨厌的事情。 -
提供 Uri 的应用不是我的。它可以是世界上任何能够共享 PDF 的应用程序。
-
请说说输入流。
标签: android uri android-fileprovider