在意向EXTRA_STREAM中向 uri 授予 uri 权限



随着传递给startActivity的意图FLAG_GRANT_READ_URI_PERMISSION,如果使用 setData 设置了 uri,我们可以授予Uri权限。但如果Uri EXTRA_STREAMUri嫉妒之前不会被授予。

我知道我们可以使用grantUriPermission后跟一个revokeUriPermission来取消授予的权限。但似乎没有好地方可以跑revokeUriPermission.

有没有更好的解决方案?或者有什么建议放revokeUriPermission?提前谢谢。

相关链接:如何使用FLAG_GRANT_READ_URI_PERMISSION授予对自定义内容提供程序的临时访问权限

我做了一些关于它的阅读。首先,EXTRA_STREAM不使用FLAG_GRANT_READ_URI_PERMISSION。它从 JellyBean 开始工作只是因为在引擎盖下,调用startActivity()副本EXTRA_STREAM ClipData ,这是为 Intent 设置并使用FLAG_GRANT_READ_URI_PERMISSION

关于你的问题,应该在哪里调用 revokeUriPermission((。

我建议使用:

private static final int REQUEST_CODE = 1;
startActivityForResult(intent, REQUEST_CODE);

而不是

startActivity(intent);

然后重写以下方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == REQUEST_CODE) {
        // Call revokeUriPermission here
    }
}

当启动的活动退出时,将调用上述方法。在此处查看文档

最新更新