15

根据FLAG_GRANT_READ_URI_PERMISSION传递给 的意图,如果 uri 设置为使用startActivity,我们可以授予权限。但如果投入进去,则果仁不予理会UrisetDataUriEXTRA_STREAMUri

我知道我们可以使用grantUriPermission后跟 arevokeUriPermission来取消授予的权限。不过好像也没什么好跑的地方revokeUriPermission

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

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

4

1 回答 1

2

我做了一些关于它的阅读。首先,EXTRA_STREAM 不使用FLAG_GRANT_READ_URI_PERMISSION. 它从 JellyBean 开始工作,只是因为在后台调用startActivity()副本EXTRA_STREAMClipData,这是为 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

    }
}

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

于 2014-05-20T11:14:31.213 回答