takePersistableUriPermission() 是否适用于多用户?
Does takePersistableUriPermission() work for multi users?
在我的应用程序中,我选择了一个带有 Intent.ACTION_OPEN_DOCUMENT_TREE
的文件夹,并获取了所选文件夹的 Uri
。我调用 takePersistableUriPermission()
授予 read/write 权限 selected Uri
.
我的问题是:它适用于我设备上的多用户吗?
例如:
我使用 Google 帐户 1 登录,安装应用程序,select 文件夹并授予权限。
然后我删除 Google 帐户 1 并使用 Google 帐户 2 登录。是否仍授予 Uri 权限?
我在Note4上测试过,换用户后还是可以的。但是我不确定其他设备,我没有找到任何关于这个问题的文档。
持久的基于 URI 的权限绑定到包名称(和用户 ID - 见下文),而不是任何类型的 Google 或其他帐户系统。这意味着只要软件包仍在安装,它就会保留权限(当然,除非授予应用程序撤销权限)。
在支持多个用户配置文件的设备上,例如许多平板电脑、Android 工作设备或手机 运行 Marshmallow,每个用户都完全相互隔离,运行 分开安装在其用户配置文件中的每个应用程序的实例。在这些情况下,基于 URI 的权限当然只适用于应用 运行 下的用户,而不适用于其他用户配置文件。
在我的应用程序中,我选择了一个带有 Intent.ACTION_OPEN_DOCUMENT_TREE
的文件夹,并获取了所选文件夹的 Uri
。我调用 takePersistableUriPermission()
授予 read/write 权限 selected Uri
.
我的问题是:它适用于我设备上的多用户吗? 例如: 我使用 Google 帐户 1 登录,安装应用程序,select 文件夹并授予权限。 然后我删除 Google 帐户 1 并使用 Google 帐户 2 登录。是否仍授予 Uri 权限?
我在Note4上测试过,换用户后还是可以的。但是我不确定其他设备,我没有找到任何关于这个问题的文档。
持久的基于 URI 的权限绑定到包名称(和用户 ID - 见下文),而不是任何类型的 Google 或其他帐户系统。这意味着只要软件包仍在安装,它就会保留权限(当然,除非授予应用程序撤销权限)。
在支持多个用户配置文件的设备上,例如许多平板电脑、Android 工作设备或手机 运行 Marshmallow,每个用户都完全相互隔离,运行 分开安装在其用户配置文件中的每个应用程序的实例。在这些情况下,基于 URI 的权限当然只适用于应用 运行 下的用户,而不适用于其他用户配置文件。