尝试将Content Uri从活动传递到服务时出现权限错误

时间:2019-05-01 18:08:30

标签: android android-intent android-contentprovider android-fileprovider android-intentservice

我有一个接受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?

1 个答案:

答案 0 :(得分:-2)

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