and*_*per 11 permissions android system-alert-window android-6.0-marshmallow
我记得曾经(在谷歌的一个视频中)告诉我,如果应用程序的先前版本更新为在新版本上拥有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的保护级别.
是否有其他权限具有此行为?
如果应用程序有targetSdk 22/23,并且操作系统升级到Android 6,会发生什么?SYSTEM_ALERT_WINDOW(或任何其他权限)是否会被撤销?
很确定其他东西会被授予,但我还是想问:其他类似特权的功能如何:SAF,管理,使用访问,辅助功能访问,通知访问,......?
编辑:关于#2,这是谷歌的答案(链接在这里):
在操作系统升级时,应用程序应保留SYSTEM_ALERT_WINDOW.默认情况下,Pre-API 23应用程序具有权限,而默认情况下禁用API 23应用程序.但是,有一个已知的错误,对于API 23应用程序,它们在升级时会丢失SYSTEM_ALERT_WINDOW.对开发人员的建议是始终在开始时检查SYSTEM_ALERT_WINDOW的状态,如果未授予,则将用户定向到"设置".我们将在未来的版本中修复该问题.
| 归档时间: | 
 | 
| 查看次数: | 594 次 | 
| 最近记录: |