自android6.0 开始,系统的部分重要权限需要在运行时申请。根据官方文档,在api23及更高版本,下面所列权限为常用权限,只需要在manifest文件中声明即可。
ACCESS_LOCATION_EXTRA_COMMANDS,
ACCESS_NETWORK_STATE,ACCESS_NOTIFICATION_POLICY,ACCESS_WIFI_STATE,BLUETOOTH,BLUETOOTH_ADMINBROADCAST_STICKY,
CHANGE_NETWORK_STATE,CHANGE_WIFI_MULTICAST_STATE,CHANGE_WIFI_STATE,DISABLE_KEYGUARD,EXPAND_STATUS_BARGET_PACKAGE_SIZE,
INSTALL_SHORTCUT,INTERNET,KILL_BACKGROUND_PROCESSES,MODIFY_AUDIO_SETTINGS,NFC,READ_SYNC_SETTINGS,READ_SYNC_STATSRECEIVE_BOOT_COMPLETED,
REORDER_TASKS,REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,REQUEST_INSTALL_PACKAGES,SET_ALARM,SET_TIME_ZONESET_WALLPAPER,
SET_WALLPAPER_HINTS,TRANSMIT_IR,UNINSTALL_SHORTCUT,USE_FINGERPRINT,VIBRATE,WAKE_LOCK,WRITE_SYNC_SETTINGS
权限组
所有的危险权限都属于权限组,如果设备运行android6.0及更高版本,则在申请危险权限时,具有以下行为:
- 如果应用在manifest文件中申请了一个危险权限,且应用当前没有任何与要申请权限处于同组的权限,则系统将会显示一个对话框来告诉用户应用需要访问的权限组,而不显示组中的某一特定权限。
- 如果应用在manifest文件中申请了一个危险权限,而且这个应用已经获得了同组的另一个危险权限。则系统会立即获得这个申请权限,而不在于用户确认。
特殊权限:
所以大部分应用并不会申请。如果需要这个权限,不仅要在manifest中声明,还需要发送Intent请求用户确认。