Android11版本新特性
Android 11版本中 对权限部分做了较大的变化
1. 取消 拒绝 并不在询问选项
但不意味着没有 永久拒绝了,取而代之的是 如果一个权限用户拒绝了两次 那么Android系统会自动将其视为“拒绝并不再询问”来处理
2. 引入权限过期机制
本来用户授予了应用程序某个权限,该权限会一直有效,现在如果某应用程序很长时间没有启动,Android系统会自动收回用户授予的权限,下次启动需要重新请求授权。
3.针对摄像机、麦克风、地理定位这3种权限提供了单次授权的选项
Android 11针对摄像机、麦克风、地理定位这3种权限提供了单次授权的选项。因为这3种权限都是属于隐私敏感的权限,如果像过去一样用户同意一次就代表永久授权,可能某些恶意应用会无节制地采集用户信息。在Android 11中请求摄像机权限,界面如下图所示
4.引入后台服务属性(需要适配)
Android 10系统首次引入了android:foregroundServiceType属性,如果你想要在前台Service中获取用户的位置信息,那么必须在AndroidManifest.xml中进行以下配置声明:
1 | <manifest> |
而在Android 11系统中,这个要求扩展到了摄像机和麦克风权限。也就是说,如果你想要在前台Service中获取设备的摄像机和麦克风数据,那么也需要在AndroidManifest.xml中进行声明:
1 | <manifest> |
5. 新的权限 ACCESS_BACKGROUND_LOCATION (需要适配)
Android 10系统中引入了一个新的权限:ACCESS_BACKGROUND_LOCATION,用于允许应用程序在后台请求设备的位置信息。不过这个权限是不可以单独申请的,而是要和ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION一起申请才行。这个也很好理解,怎么可能连前台请求位置信息都没同意呢,就允许在后台请求位置信息了。
在Android 10系统中,如果我们同时申请前台和后台定位权限,那么将会出现如下界面:
可以看到,界面上的选项有些不同,“始终允许”表示同时允许了前台和后台定位权限,“仅在使用此应用时允许”表示只允许前台定位权限,“拒绝”表示都不允许
但是如果我们在Android 11系统中同时申请前台和后台定位权限会怎么样呢?很遗憾地告诉你,会崩溃。
因为Android 11系统要求,ACCESS_BACKGROUND_LOCATION权限必须单独申请,并且在那之前,应用程序还必须已经获得了ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限才行。
6. 权限申请对话框 允许取消
权限申请对话框 在Android 11 中允许取消了,如果用户取消了权限对话框,将会视为一次拒绝。