首页 > 解决方案 > 尝试将 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?

标签: androidandroid-intentandroid-contentproviderandroid-fileproviderandroid-intentservice

解决方案


请在您的应用程序中创建 xml 文件夹,并在 xml 中提到的文件提供程序文件和网络安全配置文件中,然后在 AndroidMenifest.xml 文件中声明文件提供程序


推荐阅读