升级到targetSdk 23或Android 6后,哪些权限不会停留?

时间:2015-11-26 12:09:20

标签: android permissions android-6.0-marshmallow system-alert-window

背景

我记得曾经(在谷歌的一个视频中)告知,如果应用程序的先前版本更新为在新版本上安装了targetSdk 23,那么之前授予的所有权限 - 现在都会被授予。

因此,例如,如果你安装了一个带有targetSdk 22的应用程序,它需要一个从联系人那里读取的权限,那么即使在升级了应用程序之后,也可以使用targetSdk 23,它会保持这种状态。

原因很简单:用户在安装时已经授予了权限。

问题

根据我的发现,这条规则有一个例外:

如果你的应用拥有SYSTEM_ALERT_WINDOW权限,现在你升级到targetSdk 23,它就会被撤销(重置),你需要从用户那里请求它。

文档中的任何地方都没有提到此行为:

我也没看过任何视频。

关于SYSTEM_ALERT_WINDOW权限,唯一提到的是,您需要以不同的方式处理它们,使用ACTION_MANAGE_OVERLAY_PERMISSION来请求权限,Settings.canDrawOverlays(...)检查是否授予了权限

我尝试了什么

我试图就此问题与Google联系,他们说这是故意的:

  

我与开发团队交谈过你所看到的行为   按预期工作。这在此处记录:   http://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW

     

在Android M中引发了SYSTEM_ALERT_WINDOW的保护级别。

问题

  1. 是否还有其他具有此行为的权限?

  2. 如果应用程序有targetSdk 22/23,并且操作系统升级到Android 6,会发生什么? SYSTEM_ALERT_WINDOW(或任何其他权限)是否会被撤销?

  3. 非常确定其他内容会被授予,但我还是想问:其他类似特权的功能如何:SAF,admin,usage-access,accessibility access,notification access ,. ..?

  4. 编辑:关于#2,这是Google的回答(链接here):

      

    在操作系统升级时,应用程序应保留SYSTEM_ALERT_WINDOW。预API 23应用程序   默认情况下具有权限,而不是关闭的API 23应用程序   默认情况下。但是,对于API 23应用程序,他们有一个已知的错误   在升级时丢失SYSTEM_ALERT_WINDOW。建议a   开发人员总是要检查SYSTEM_ALERT_WINDOW的状态   启动,如果未授予,则将用户定向到“设置”。我们将成为   在将来的版本中解决问题。

0 个答案:

没有答案
相关问题