如何在 Android 中使用另一个应用 Intent 中的文件 Uri
How can I use file Uri from another app Intent in Android
在我的应用程序中,我从任何其他可以共享 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?
据我所知,最好的办法是立即 read/copy 来自内容提供商的数据,然后使用该数据做任何你想做的事。所以不要浪费你的时间去管理原来的。希望对您有所帮助
在我的应用程序中,我从任何其他可以共享 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?
据我所知,最好的办法是立即 read/copy 来自内容提供商的数据,然后使用该数据做任何你想做的事。所以不要浪费你的时间去管理原来的。希望对您有所帮助