您的位置 首页 java

Android动态权限管理

Android 6.0引入了动态权限管理,将标记为危险的权限从安装时权限(Install Time Permission)模型移动到运行时权限模型(Runtime Permissions):

  • 安装时权限模型(Android5.1以及更早):用户在应用安装和更新时,对危险权限授权。但是OEM和运行商预装的应用将自动预授权。
  • 运行时权限(Android6.0及以后):用户在应用运行时,对应用授予危险权限。由应用决定何时去申请权限(例如,在应用启动时或者用户访问某个特性时),但必须容许用户来授予或者拒绝应用对特定权限组的访问。OEM和运营商可以预装应用,但是不能对权限进行预授权。
  • 运行时权限提供给用户关于应用所需权限更多的相关上下文和可视性,这也让开发者帮助用户更好的理解:为什么应用需要所请求的权限,授权将有什么样的好处,拒绝将有何种不便。用户可以通过设置中的菜单来撤销应用的权限。

系统要求标记为危险(dangerous)的权限使用运行时权限模型。查看危险权限列表可以使用命令:adb shell pm list permissions -g -d 。

[java] view plain copy

  1. adb shell pm list permissions -g -d
  2. Dangerous Permissions:
  3. group:android.permission-group.CONTACTS
  4. permission:android.permission.WRITE_CONTACTS
  5. permission:android.permission.GET_ACCOUNTS
  6. permission:android.permission.READ_CONTACTS
  7. group:android.permission-group.PHONE
  8. permission:android.permission.READ_CALL_LOG
  9. permission:android.permission.ANSWER_PHONE_CALLS
  10. permission:android.permission.READ_PHONE_NUMBERS
  11. permission:android.permission.READ_PHONE_STATE
  12. permission:android.permission.CALL_PHONE
  13. permission:android.permission.WRITE_CALL_LOG
  14. permission:android.permission.USE_SIP
  15. permission:android.permission.PROCESS_OUTGOING_CALLS
  16. permission:com.android.voicemail.permission.ADD_VOICEMAIL
  17. group:android.permission-group.CALENDAR
  18. permission:android.permission.READ_CALENDAR
  19. permission:android.permission.WRITE_CALENDAR
  20. group:android.permission-group.CAMERA
  21. permission:android.permission.CAMERA
  22. group:android.permission-group.SENSORS
  23. permission:android.permission.BODY_SENSORS
  24. group:android.permission-group.LOCATION
  25. permission:android.permission.ACCESS_FINE_LOCATION
  26. permission:android.permission.ACCESS_COARSE_LOCATION
  27. group:android.permission-group.STORAGE
  28. permission:android.permission.READ_EXTERNAL_STORAGE
  29. permission:android.permission.WRITE_EXTERNAL_STORAGE
  30. group:android.permission-group.MICROPHONE
  31. permission:android.permission.RECORD_AUDIO
  32. group:android.permission-group. SMS
  33. permission:android.permission.READ_SMS
  34. permission:android.permission.RECEIVE_WAP_PUSH
  35. permission:android.permission.RECEIVE_MMS
  36. permission:android.permission.RECEIVE_SMS
  37. permission:android.permission.SEND_SMS
  38. permission:android.permission.READ_CELL_BROADCASTS

Android6.0并不改变正常权限的行为。正常权限指的是所有非危险(non-dangerous)权限,包括normal, system 和signature 权限。正常权限风险较低,用于容许应用以最小风险来访问隔离的应用级别的特性。在Android5.1和早期版本中,系统在安装时自动将正常权限授予请求的应用,并不提示用户。

1、在Android Manifest 中添加权限

[java] view plain copy

  1. <uses-permission android:name=”android.permission.CAMERA” />

2、判断权限是否申请

[java] view plain copy

  1. // 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
  2. if ( Build .VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  3. //判断是否有准许这个权限 GRANTED—授权 DINIED—拒绝
  4. if (ContextCompat.checkSelfPermission( this , Manifest.permission.CAMERA) != PERMISSION_GRANTED) {
  5. //开始提交请求权限
  6. ActivityCompat.requestPermissions( this , permission, 1);
  7. }
  8. }

后记:对于大部分转行的人来说,找机会把自己的基础知识补齐,边工作边补基础知识,真心很重要。

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。”

文章来源:智云一二三科技

文章标题:Android动态权限管理

文章地址:https://www.zhihuclub.com/184818.shtml

关于作者: 智云科技

热门文章

网站地图