【问题标题】:How can I use file Uri from another app Intent in Android如何在 Android 中使用来自另一个应用程序 Intent 的文件 Uri
【发布时间】: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


【解决方案1】:

据我所知,最好的办法是立即从内容提供商读取/复制数据,然后使用该数据做任何您想做的事情。所以不要浪费你的时间来管理原来的。希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2019-07-10
    • 2019-12-29
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多