android - 尝试将 Content Uri 从活动传递到服务时出现权限错误
问题描述
我有一个接受的活动android.intent.action.SEND
。
它接受一些媒体文件和文本。
当它接受一个新的“共享”时,它会进行一些验证检查并将 Uri 传递给服务,它看起来像这样:
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
Intent serviceIntent = new Intent(this, ShareService.class)
.setData(uri)
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // probably redundant but harmless here
.putParcelableArrayListExtra(Constants.EXTRA_SHARE_FILES, uris)
startService(serviceIntent);
它适用于所有file
提供者,通常content
也适用,但有时我会收到失败报告:
Non-fatal Exception: java.lang.SecurityException: UID 10283 does not have permission to content://com.whatsapp.provider.media/item/33560 [user 0]
我能做些什么来保持 Uri 许可有效吗?我应该如何处理这种 Uri?
解决方案
请在您的应用程序中创建 xml 文件夹,并在 xml 中提到的文件提供程序文件和网络安全配置文件中,然后在 AndroidMenifest.xml 文件中声明文件提供程序
推荐阅读
- python - openCV 中的 Mac aalart 弹出窗口
- laravel - 在 Lumen 框架内通过 Mandrill 发送电子邮件
- c - 检查字符串的标记方法
- jenkins - Jenkins unstash 不起作用,但目录不干净
- python - Docker在Dockerfile中编译python文件不要创建pyc
- node.js - 如何在服务器生成的 pdf 中创建复选框?
- go - 为什么我不能将 Error() 用于类型 validator.FieldError
- reactjs - 如何在 react.js 中按钮的 onClick 事件的同一窗口中显示表单
- c# - 用于自定义 XML 输入的动态 DataGrid 式解决方案
- java - 如何使用 maven 插件在构建路径中添加多个生成的文件夹