前言:
在Android 6.0 之前权限管理存在一些弊端:
- 权限系统只会在安装的时候询问一次,用户可以选择性的授予应用相关权限。但是一旦安装了,应用软件会在用户毫不知情的情况下访问权限内的所有东西。
- 在Android 6.0 之前权限都称为install time permission,应用软件在安装以后用户不能修改permission 的授权情况,也不允许对permission 进行单独的授权和撤销。
Android 6.0 及更高版本中的 Android 应用权限模式旨在使权限更易于用户理解、更实用、更安全。该模式将需要危险权限的 Android 应用从安装时权限模式转移至运行时权限模式:
- 安装时权限(Android 5.1 及更低版本,或者应用目标SDK为22或更低版本)。用户在安装或更新应用时,向应用授予危险权限。OEM/运营商可以在不通知用户的情况下,预先安装具有预授权的应用。
- 运行时权限(Android 6.0 及更高版本,或者应用目标SDK为23或更高版本)。用户在应用运行时向应用授予危险权限。应用决定何时申请权限(例如,在应用启动或用户访问特定功能时申请权限),但必须允许用户授予/拒绝授予应用访问特定权限组的权限。OEM/运营商可以预安装应用,但不得预先授予权限。
Runtime permission 向前兼容
- 如果是M 之前的应用安装在M 或更高的版本上,permission 会安装之前旧的方式管理,也就是install time permission model。需要注意的是,在M