授予uri在EXTRA_STREAM中的意图权限

Bea*_*ear 11 android android-contentprovider android-permissions

随着FLAG_GRANT_READ_URI_PERMISSION在意图传递给startActivity,我们可以授予Uri如果URI使用设置权限setData.但如果Uri在投入EXTRA_STREAM,Uri则不会在jeallybean之前授予.

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

有没有更好的解决方案?或任何建议revokeUriPermission?提前致谢.

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

Dam*_*tla 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);
Run Code Online (Sandbox Code Playgroud)

代替

startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

然后重写以下方法:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

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