Android 6.0 权限申请辅助 ----PermissionsHelper

项目地址:https://github.com/didikee/PermissionsHelper

Android 的危险权限分为9组.如下所示

CALENDAR

  1. READ_CALENDAR
  2. WRITE_CALENDAR

CAMERA

  1. CAMERA

CONTACTS

  1. READ_CONTACTS
  2. WRITE_CONTACTS
  3. GET_ACCOUNTS

LOCATION

  1. ACCESS_FINE_LOCATION
  2. ACCESS_COARSE_LOCATION

MICROPHONE

  1. RECORD_AUDIO

PHONE

  1. READ_PHONE_STATE
  2. CALL_PHONE
  3. READ_CALL_LOG
  4. WRITE_CALL_LOG
  5. ADD_VOICEMAIL
  6. USE_SIP
  7. PROCESS_OUTGOING_CALLS

SENSORS

  1. BODY_SENSORS

SMS

  1. SEND_SMS
  2. RECEIVE_SMS
  3. READ_SMS
  4. RECEIVE_WAP_PUSH
  5. RECEIVE_MMS

STORAGE

  1. READ_EXTERNAL_STORAGE
  2. WRITE_EXTERNAL_STORAGE

1. AndroidManifest.xml

9组 危险权限,按照你的项目需求申请,不要盲目,切勿贪婪.更不要偷懒复制粘贴

  1. <!-- Dangerous Permissions start -->
  2. <!--PHONE-->
  3. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  4. <uses-permission android:name="android.permission.CALL_PHONE"/>
  5. <uses-permission android:name="android.permission.READ_CALL_LOG"/>
  6. <uses-permission android:name="android.permission.ADD_VOICEMAIL"/>
  7. <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
  8. <uses-permission android:name="android.permission.USE_SIP"/>
  9. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
  10. <!--CALENDAR-->
  11. <uses-permission android:name="android.permission.READ_CALENDAR"/>
  12. <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
  13. <!--CAMERA-->
  14. <uses-permission android:name="android.permission.CAMERA"/>
  15. <!--CONTACTS-->
  16. <uses-permission android:name="android.permission.READ_CONTACTS"/>
  17. <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
  18. <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
  19. <!--LOCATION-->
  20. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  21. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  22. <!--MICROPHONE-->
  23. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  24. <!--SENSORS-->
  25. <uses-permission android:name="android.permission.BODY_SENSORS"/>
  26. <!--SMS-->
  27. <uses-permission android:name="android.permission.SEND_SMS"/>
  28. <uses-permission android:name="android.permission.RECEIVE_SMS"/>
  29. <uses-permission android:name="android.permission.READ_SMS"/>
  30. <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/>
  31. <uses-permission android:name="android.permission.RECEIVE_MMS"/>
  32. <!--STORAGE-->
  33. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  34. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  35. <!-- Dangerous Permissions end -->

2. 在Activity中使用

  1. public class PermissionsActivity extends AppCompatActivity {
  2. // app所需要的全部危险权限
  3. static final String[] PERMISSIONS = new String[]{
  4. DangerousPermissions.CALENDAR,
  5. DangerousPermissions.CAMERA,
  6. DangerousPermissions.CONTACTS,
  7. DangerousPermissions.LOCATION,
  8. DangerousPermissions.MICROPHONE,
  9. DangerousPermissions.PHONE,
  10. DangerousPermissions.STORAGE,
  11. DangerousPermissions.SENSORS,
  12. DangerousPermissions.SMS
  13. };
  14. private PermissionsHelper permissionsHelper;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_permissions);
  19. checkPermissions();
  20. }
  21. private void checkPermissions() {
  22. permissionsHelper = new PermissionsHelper(this,PERMISSIONS);
  23. if (permissionsHelper.checkAllPermissions(PERMISSIONS)){
  24. permissionsHelper.onDestroy();
  25. //doSomething
  26. }else {
  27. //申请权限
  28. permissionsHelper.startRequestNeedPermissions();
  29. }
  30. permissionsHelper.setonAllNeedPermissionsGrantedListener(new PermissionsHelper.onAllNeedPermissionsGrantedListener() {
  31. @Override
  32. public void onAllNeedPermissionsGranted() {
  33. Log.d("test","onAllNeedPermissionsGranted");
  34. }
  35. @Override
  36. public void onPermissionsDenied() {
  37. Log.d("test","onPermissionsDenied");
  38. }
  39. });
  40. }
  41. @Override
  42. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
  43. @NonNull int[] grantResults) {
  44. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  45. permissionsHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
  46. }
  47. }

9 组危险权限 (Dangerous Permissions)

  1. public final class DangerousPermissions {
  2. /**
  3. * Google doc:
  4. * If an app requests a dangerous permission listed in its manifest,
  5. * and the app already has another dangerous permission in the same
  6. * permission group, the system immediately grants the permission
  7. * without any interaction with the user. For example, if an app had
  8. * previously requested and been granted the READ_CONTACTS permission,
  9. * and it then requests WRITE_CONTACTS, the system immediately grants that permission.
  10. */
  11. /*
  12. * permission group : PHONE
  13. * READ_PHONE_STATE
  14. * CALL_PHONE
  15. * READ_CALL_LOG
  16. * WRITE_CALL_LOG
  17. * ADD_VOICEMAIL
  18. * USE_SIP
  19. * PROCESS_OUTGOING_CALLS
  20. */
  21. public static final String PHONE= Manifest.permission.READ_PHONE_STATE;
  22. /**
  23. * permission group : CALENDAR
  24. * READ_CALENDAR
  25. * WRITE_CALENDAR
  26. */
  27. public static final String CALENDAR= Manifest.permission.READ_CALENDAR;
  28. /**
  29. * permission group : CAMERA
  30. * CAMERA
  31. */
  32. public static final String CAMERA= Manifest.permission.CAMERA;
  33. /**
  34. * permission group : CONTACTS
  35. * READ_CONTACTS
  36. * WRITE_CONTACTS
  37. * GET_ACCOUNTS
  38. */
  39. public static final String CONTACTS= Manifest.permission.READ_CONTACTS;
  40. /**
  41. * permission group : LOCATION
  42. * ACCESS_FINE_LOCATION
  43. * ACCESS_COARSE_LOCATION
  44. */
  45. public static final String LOCATION= Manifest.permission.ACCESS_FINE_LOCATION;
  46. /**
  47. * permission group : MICROPHONE
  48. * RECORD_AUDIO
  49. */
  50. public static final String MICROPHONE= Manifest.permission.RECORD_AUDIO;
  51. /**
  52. * permission group : SENSORS
  53. * BODY_SENSORS
  54. */
  55. public static final String SENSORS= Manifest.permission.BODY_SENSORS;
  56. /**
  57. * permission group : SMS
  58. * SEND_SMS
  59. * RECEIVE_SMS
  60. * READ_SMS
  61. * RECEIVE_WAP_PUSH
  62. * RECEIVE_MMS
  63. */
  64. public static final String SMS= Manifest.permission.SEND_SMS;
  65. /**
  66. * permission group : STORAGE
  67. * READ_EXTERNAL_STORAGE
  68. * WRITE_EXTERNAL_STORAGE
  69. */
  70. public static final String STORAGE= Manifest.permission.WRITE_EXTERNAL_STORAGE;
  71. }

运行时 申请权限 图示

Android 6.0 权限申请辅助 ----PermissionsHelper的更多相关文章

  1. ## Android 6.0 权限申请 ##

    Android 6.0 权限申请 1. 以前的权限申请(sdk<23) 直接在AndroidManifest.xml中申明即可: <uses-permission android:name ...

  2. Android 6.0权限管理

    Android 6.0权限管理 关于权限管理 Android6.0 发布之后,Android 的权限系统被重新设计.在 23 之前 App 的权限只会在用户安装的时候询问一次,App一旦安装后就可以使 ...

  3. Google Android 6.0 权限完全解析

    注:本文只针对Google原生Android系统有效, 小米魅族等手机有自己的权限机制, 可能不适用 一.运行时权限的变化及特点 新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一类是 ...

  4. android:Android 6.0权限控制代码封装

    新建的Activity类可以继承这个Activity,这个类封装了关于新版的权限处理相关的代码 使用方法: package com.glsite.phone; import android.conte ...

  5. Android 6.0 权限知识学习笔记

    最近在项目上因为6.0运行时权限吃了亏,发现之前对运行时权限的理解不足,决定回炉重造,重新学习一下Android Permission. 进入正题: Android权限 在Android系统中,权限分 ...

  6. Android 6.0权限全面详细分析和解决方案

    原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...

  7. Android 6.0权限

    在android 6.0 Marshmallow版本之后,系统不会在软件安装的时候就赋予该app所有其申请的权限,对于一些危险级别的权限,app需要在运行时一个一个询问用户授予权限. 只有那些targ ...

  8. Android 6.0 权限管理

    google官方例子: https://github.com/googlesamples/android-RuntimePermissions Android 6.0在我们原有的AndroidMani ...

  9. 项目中处理android 6.0权限管理问题

    android 6.0对于权限管理比较收紧,因此在适配android 6.0的时候就很有必要考虑一些权限管理的问题. 如果你没适配6.0的设备并且权限没给的话,就会出现类似如下的问题: java.la ...

随机推荐

  1. scrapy爬虫结果插入mysql数据库

    1.通过工具创建数据库scrapy

  2. 电脑只有网页打不开,QQ和其他软件都能用

    应该就是浏览器设置代理服务器的问题 1.打开浏览器->找到工具->internet选项->链接->局域网设置 将代理服务器下面勾去掉

  3. tcp三次握手、四次挥手

    TCP的三次握手(建立连接)和四次挥手(关闭连接):http://blog.csdn.net/whuslei/article/details/6667471/ TCP协议中的三次握手和四次挥手(图解) ...

  4. Beta工作比例(Transcend)

    Beta工作比例 成员 工作 黄志明 10% 洪志兴 10% 李佳恺 17 % 巫振格 17 % 肖承志 10 % 李严 16 % 牛妍辉 stripes 20%

  5. BZOJ 4066 简单题 ——KD-Tree套替罪羊树

    [题目分析] 直接x,y二维轮番划分,暴力即可. 套上替罪羊,打碎重构,对于时间复杂度有了保证. 写起来好麻烦,重构的技巧很棒! [代码] #include <cstdio> #inclu ...

  6. UI设计颜色风格

    有关颜色搭配方案: 摘取:http://bbs.9ria.com/thread-395-1-1.html 有关设计,可以参考:http://www.sj33.cn/

  7. 基于dubbo构建分布式项目与服务模块

      关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...

  8. POJ No.2386【B007】

    [B007]Lake Counting[难度B]—————————————————————————————————————————— [Description] Due to recent rains ...

  9. solr 添加索引

    添加索引模板: <add> <doc> <field name="employeeId">05991</field> <fie ...

  10. [软件推荐]快速文件复制工具(Limit Copy) V4.0 绿色版

    快速文件复制工具(Limit Copy)绿色版是一款智能变频超快复制绿色软件. 快速文件复制工具(Limit Copy)功能比较完善,除了文件复制还可以智能变频,直接把要复制的文件拖入窗口即可,无需手 ...