Android运行时权限机制和动态申请权限

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HUandroid/article/details/82689473

Android运行时权限机制和动态申请权限

权限机制

Android底层是基于Linux系统的,而Linux权限访问由进程和文件两部分组成,将系统权限由底层到应用层分为三类:

  1. Android所有者权限,相当于拥有Android Rom 开发权限,可以取得所有权限
  2. Android Root 权限,相当于取得Linux系统的最高用户权限,可以对任意文件进行更改
  3. Android应用程序权限 ,获取权限只能通过在AndroidManifest中申明的权限,然后由用户来授权
在2015年谷歌发布Android6.0系统,其中添加了运行权限检测,防止流氓应用盗取个人信息。而不在是安装的时候赋予应用在清单文件中申请的全部权限。Google将全部权限分成了普通权限(Normal Permisson)和危险权限(Dangerous Permisson),其中普通权限在应用安装时候赋予,而危险权限在运行是检测是否需要该权限动态获取。

原生权限机制图:

这里写图片描述

  • Normal Permisson
    普通权限不会涉及到用户个人隐私,只需要在AndroidManifest清单文件中申请,应用既可以获得去权限,权限赋予后无法被取消,是应用的基本权限。比如:获取网络状态ACCESS_NETWORK_STATE; USE_FINGERPRINT 获取指纹权限。部分ROM可以取消部分基本权限。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_NOTIFICATION_POLICY
android.permission.ACCESS_WIFI_STATE
android.permission.ACCESS_WIMAX_STATE
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.CHANGE_NETWORK_STATE
android.permission.CHANGE_WIFI_MULTICAST_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.CHANGE_WIMAX_STATE
android.permission.DISABLE_KEYGUARD
android.permission.EXPAND_STATUS_BAR
android.permission.FLASHLIGHT
android.permission.GET_ACCOUNTS
android.permission.GET_PACKAGE_SIZE
android.permission.INTERNET
android.permission.KILL_BACKGROUND_PROCESSES
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.NFC
android.permission.READ_SYNC_SETTINGS
android.permission.READ_SYNC_STATS
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.REORDER_TASKS
android.permission.REQUEST_INSTALL_PACKAGES
android.permission.SET_TIME_ZONE
android.permission.SET_WALLPAPER
android.permission.SET_WALLPAPER_HINTS
android.permission.SUBSCRIBED_FEEDS_READ
android.permission.TRANSMIT_IR
android.permission.USE_FINGERPRINT
android.permission.VIBRATE
android.permission.WAKE_LOCK
android.permission.WRITE_SYNC_SETTINGS
com.android.alarm.permission.SET_ALARM
com.android.launcher.permission.INSTALL_SHORTCUT
com.android.launcher.permission.UNINSTALL_SHORTCUT
  • Dangerous Permisson
    危险权限可能会涉及到用户个人隐私和财产问题,比如拨打电话权限、获取短信内容权限。在Android6.0以上,危险权限必须在运行时候检测是否被用户赋予该权限,必须需要在用户的手动确认下赋予危险权限,如果用户拒绝该权限话,危险权限的代码将不会执行或者抛异常。
    注意:在Android6.0系统以上,危险权限会以权限组的形式去申请,当用户同意权限组的一个权限,权限组的其他权限也会被赋予。但是需要注意的是,在Android8.0系统上,Google取消了权限组申请,申请单一权限也只会给与单一权限,比如申请SEND_SMS发送短信权限时,用户同意赋予后,不会再给与权限组其他权限(读取短信,监听短信,语言短信等),只会给与SEND_SMS发送短信权限。当需要READ_SMS读取短信权限时需要重新申请READ_SMS读取短信权限
group:android.permission-group.CONTACTS
  permission:android.permission.WRITE_CONTACTS
  permission:android.permission.GET_ACCOUNTS
  permission:android.permission.READ_CONTACTS

group:android.permission-group.PHONE
  permission:android.permission.READ_CALL_LOG
  permission:android.permission.READ_PHONE_STATE
  permission:android.permission.CALL_PHONE
  permission:android.permission.WRITE_CALL_LOG
  permission:android.permission.USE_SIP
  permission:android.permission.PROCESS_OUTGOING_CALLS
  permission:com.android.voicemail.permission.ADD_VOICEMAIL

group:android.permission-group.CALENDAR
  permission:android.permission.READ_CALENDAR
  permission:android.permission.WRITE_CALENDAR

group:android.permission-group.CAMERA
  permission:android.permission.CAMERA

group:android.permission-group.SENSORS
  permission:android.permission.BODY_SENSORS

group:android.permission-group.LOCATION
  permission:android.permission.ACCESS_FINE_LOCATION
  permission:android.permission.ACCESS_COARSE_LOCATION

group:android.permission-group.STORAGE
  permission:android.permission.READ_EXTERNAL_STORAGE
  permission:android.permission.WRITE_EXTERNAL_STORAGE

group:android.permission-group.MICROPHONE
  permission:android.permission.RECORD_AUDIO

group:android.permission-group.SMS
  permission:android.permission.READ_SMS
  permission:android.permission.RECEIVE_WAP_PUSH
  permission:android.permission.RECEIVE_MMS
  permission:android.permission.RECEIVE_SMS
  permission:android.permission.SEND_SMS
  permission:android.permission.READ_CELL_BROADCASTS

提供三大主流权限申请框架,也可以自己封装,原生的那套真的很繁琐,建议节省时间。

猜你喜欢

转载自blog.csdn.net/HUandroid/article/details/82689473