Android 6.0动态获取权限开源项目

      Android 6.0 相比之前的Android版本有一个很大的不同点,就是动态获取权限,即不仅在Manifest文件里设置各种权限,在使用一些危险权限时候还得动态的弹出个对话框让客户去选择授予这个权限。

    基本内容和代码就不重复了,大家可以参考这一篇:

http://gudong.name/%E6%8A%80%E6%9C%AF/2015/11/10/android_m_permission.html

或者http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html

     需要动态赋予的权限列表是:

Permission Group

Permissions

android.permission-group.CALENDAR

· android.permission.READ_CALENDAR

· android.permission.WRITE_CALENDAR

android.permission-group.CAMERA

· android.permission.CAMERA

android.permission-group.CONTACTS

· android.permission.READ_CONTACTS

· android.permission.WRITE_CONTACTS

· android.permission.GET_ACCOUNTS

android.permission-group.LOCATION

· android.permission.ACCESS_FINE_LOCATION

· android.permission.ACCESS_COARSE_LOCATION

android.permission-group.MICROPHONE

· android.permission.RECORD_AUDIO

android.permission-group.PHONE

· android.permission.READ_PHONE_STATE

· android.permission.CALL_PHONE

· android.permission.READ_CALL_LOG

· android.permission.WRITE_CALL_LOG

· com.android.voicemail.permission.ADD_VOICEMAIL

· android.permission.USE_SIP

· android.permission.PROCESS_OUTGOING_CALLS

android.permission-group.SENSORS

· android.permission.BODY_SENSORS

android.permission-group.SMS

· android.permission.SEND_SMS

· android.permission.RECEIVE_SMS

· android.permission.READ_SMS

· android.permission.RECEIVE_WAP_PUSH

· android.permission.RECEIVE_MMS

· android.permission.READ_CELL_BROADCASTS

android.permission-group.STORAGE

· android.permission.READ_EXTERNAL_STORAGE

· android.permission.WRITE_EXTERNAL_STORAGE


下面是几个开源的项目,及它们的特点:

Android权限适配方案(API 4+)

http://blog.csdn.net/a1018875550/article/details/51525438

PermissionsDispatcher:使用注解的形式设置权限,

@RuntimePermissions 是必须的注册当前activityfragment

@NeedsPermission 是必须要有的,在需要权限的方法上添加

@OnShowRationale 注释一个方法解释为什么需要这个权限并提示用户判断是否允许

@OnPermissionDenied 当权限被拒绝时调用

@OnNeverAskAgain 当用户勾选了不再提示时调用

优点:功能齐全,代码简洁。

缺点:配置较麻烦,必须在Android Studio 2.0+版本使用

 

PermissionGen:https://github.com/lovedise/PermissionGen

在需要权限的方法中加入需要权限的代码,然后覆盖onRequestPermissionsResult(),然后添加注解的方法@PermissionFail(),@PermissionSuccess(),编写响应的逻辑。

优点:配置简单,引用库即可,代码简洁

缺点:功能较少,目前只找到了允许和拒绝的回调

 

MPermission:https://github.com/hongyangAndroid/MPermissions

在上一个的基础上把运行时注解改成了编译时注解。需要解释会自动调用解释注解的方法@ShowRequestPermissionRationale()

 

RxPermission:https://github.com/tbruyelle/RxPermissions

代码比上面更简洁了一些,没有用注解,不需要覆盖onRequestPermissionsResult(),配置不麻烦,这个完全遵循Rx规则,功能上目前没有找到解释的回调(源码不多,个人感觉更改方便)。

RxView.clicks(findViewById(R.id.enableCamera))

    .compose(RxPermissions.getInstance(this).ensure(Manifest.permission.CAMERA))

    .subscribe(granted -> {

        // R.id.enableCamera has been clicked

    });

//If multiple permissions at the same time, the result is combined :

 

RxPermissions.getInstance(this)

    .request(Manifest.permission.CAMERA,

             Manifest.permission.READ_PHONE_STATE)

    .subscribe(granted -> {

        if (granted) {

           // All requested permissions are granted

        } else {

           // At least one permission is denied

        }

    });

//You can also observe a detailed result with requestEach or ensureEach :

 

RxPermissions.getInstance(this)

    .requestEach(Manifest.permission.CAMERA,

             Manifest.permission.READ_PHONE_STATE)

    .subscribe(permission -> { // will emit 2 Permission objects

        if (permission.granted) {

           // `permission.name` is granted !

        }

    });.

 

PermissionHelper:https://github.com/k0shk0sh/PermissionHelper

功能齐全,没有使用注解,配置简单,但需要实现OnPermissionCallback接口,实现里面的方法来动态设置权限。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值