Android开发必备之运行时动态请求权限

本文介绍了从Android 6.0开始的运行时权限管理,讲解如何动态请求权限,包括检查权限、请求权限和处理响应。并分享了一个简单的权限请求类的使用方法,帮助开发者更好地理解和实践Android权限管理。
摘要由CSDN通过智能技术生成

从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限。它还让用户可以对应用的功能进行更多控制;例如,用户可以选择为相机应用提供相机访问权限,而不提供设备位置的访问权限。用户可以随时进入应用的“Settings”界面调用权限。
如果设备运行的是 Android 5.1(API 级别 22)或更低版本,并且应用的 targetSdkVersion 是 22 或更低版本,则系统会在安装时要求用户授予权限。再次强调,系统只告诉用户应用需要的权限组,而不告知具体权限。所以如果不想动态获取权限的话,可以设置 targetSdkVersion 小于23即可

系统权限分为两类:正常权限和危险权限:

  1. 正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单(Manifest)中列出了正常权限,系统将自动授予该权限。
  2. 危险权限会授予应用访问用户机密数据的权限。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。如果您列出了危险权限,则用户必须明确批准您的应用使用这些权限。

正常的权限

  1. ACCESS_LOCATION_EXTRA_COMMANDS
  2. ACCESS_NETWORK_STATE
  3. ACCESS_NOTIFICATION_POLICY
  4. ACCESS_WIFI_STATE
  5. BLUETOOTH
  6. BLUETOOTH_ADMIN
  7. BROADCAST_STICKY
  8. CHANGE_NETWORK_STATE
  9. CHANGE_WIFI_MULTICAST_STATE
  10. CHANGE_WIFI_STATE
  11. DISABLE_KEYGUARD
  12. EXPAND_STATUS_BAR
  13. GET_PACKAGE_SIZE
  14. INSTALL_SHORTCUT
  15. INTERNET
  16. KILL_BACKGROUND_PROCESSES
  17. MODIFY_AUDIO_SETTINGS
  18. NFC
  19. READ_SYNC_SETTINGS
  20. READ_SYNC_STATS
  21. RECEIVE_BOOT_COMPLETED
  22. REORDER_TASKS
  23. REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  24. REQUEST_INSTALL_PACKAGES
  25. SET_ALARM
  26. SET_TIME_ZONE
  27. SET_WALLPAPER
  28. SET_WALLPAPER_HINTS
  29. TRANSMIT_IR
  30. UNINSTALL_SHORTCUT
  31. USE_FINGERPRINT
  32. VIBRATE
  33. WAKE_LOCK
  34. WRITE_SYNC_SETTINGS
    危险权限表格
    这里写图片描述

所有危险的 Android 系统权限都属于权限组。如果设备运行的是 Android 6.0(API 级别 23),并且应用的 targetSdkVersion 是 23 或更高版本,则当用户请求危险权限时系统会发生以下行为:

  1. 如果应用请求其清单中列出的危险权限,而应用目前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述应用要访问的权限组。对话框不描述该组内的具体权限。例如,如果应用请求 READ_CONTACTS 权限,系统对话框只说明该应用需要访问设备的联系信息。如果用户批准,系统将向应用授予其请求的权限。
  2. 如果应用请求其清单中列出的危险权限,而应用在同一权限组中已有另一项危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。例如,如果某应用已经请求并且被授予了 READ_CONTACTS 权限,然后它又请求 WRITE_CONTACTS,系统将立即授予该权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值