2

一次性权限描述如下

在 Android 11 中,每当您的应用请求与位置、麦克风或摄像头相关的权限时,面向用户的权限对话框都会包含一个名为 Only this time 的选项,如图 1 所示。如果用户在对话框中选择此选项,您的应用程序被授予临时一次性权限。您的应用只有在满足以下条件之一的情况下才能访问相关数据:

  • 自从用户授予一次性权限后,您的应用程序的活动就一直可见。

  • 当用户授予权限并且从那时起一直在运行前台服务时,您的应用程序是可见的。只要前台服务继续运行,即使用户将您的应用程序移至后台,您的应用程序也将保留该权限。

如果两个条件都不成立,则无论目标 SDK 版本如何,都需要再次向用户请求权限。

所以,为了尝试这个新功能,我做了以下事情:

  • 我创建了一个使用相机的应用程序,没有前台服务。
  • 出现提示时,我授予该应用一次性相机权限。
  • 之后,我尝试按 Home 或打开另一个应用程序将我的应用程序发送到后台。

我认为这是应该撤销许可的时候,但事实并非如此。当我回到我的应用程序时,我仍然可以打开相机。

那么,究竟何时撤销一次性许可?非常感谢!

4

2 回答 2

3

根据我的实验,似乎一次性许可对当前流程有利。一旦您的流程因任何原因终止,权限授予就会失效。

但是,尚不清楚这是文档错误还是实现错误。跟踪此问题以了解未来 Android R 版本中会发生什么。

于 2020-03-18T12:15:34.637 回答
1

基于对相机权限的试验,一旦授予一次性权限,它就会一直保持这种状态,直到应用程序的进程被用户或系统杀死。

如果用户杀死应用程序,系统会在 5 秒后撤销权限。这允许应用程序在立即重新启动时不会失去权限。

如果用户将应用程序后台,系统会在 1 分钟后撤销权限,从而杀死应用程序的进程。

于 2020-11-19T20:32:21.263 回答