android - 如何在 Android 中使用来自另一个应用程序 Intent 的文件 Uri
问题描述
在我的应用程序中,我从任何其他可以共享 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 ?
解决方案
据我所知,最好的办法是立即从内容提供者读取/复制数据,然后使用该数据做任何你想做的事情。所以不要浪费你的时间来管理原来的。我希望它对你有帮助
推荐阅读
- coq - Coq Vector 在证明模式下爆炸?
- flutter - 为什么我的页面在颤动中没有刷新底部导航?
- c++ - 派生结构和指向父结构中自身的指针
- google-cloud-firestore - 无法从 Firebase 中删除 sha-1 指纹
- javascript - 在项目之间共享 react ts 组件的其他方式
- android - 为什么 expo 不能在我的移动设备上运行?
- text-to-speech - 文本到语音的 Nexmo API 更改?
- povray - 使用图像对球体进行纹理处理,使其面向相机
- algorithm - 计算火柴网格中所有方块的程序
- java - 一个接一个地显示文字Android