android 动态权限开源库对比,Android权限动态检查开源库 -- Dexter

先贴上这个开源库的主页地址:

这是一个不错的老外写的开源库,用来简化Android动态权限检测,因为Android 6.0以及以后的版本加入了动态权限的检测,来优化系统的安全性。但是当我们自己去写代码的时候就会遇到去动态申请权限的问题,Android明确规定了一些权限一定要动态申请才能使用,不然会报SecurityException。

当然了,Android原生肯定是提供了申请这些权限的接口,以及获取当前权限是否被用户确认申请等,但是在使用过程中比较复杂,所以下面介绍这个开源库的使用,非常简单。

首先新建Android工程项目,并且在build.gradle中添加依赖:

dependencies {

//...

implementation 'com.karumi:dexter:5.0.0'

}

使用起来也是非常方便,

public MyActivity extends Activity {

@Override public void onCreate() {

super.onCreate();

Dexter.withActivity(activity)

.withPermission(permission)

.withListener(listener)

.check();

}

}

单个权限,

Dexter.withActivity(this)

.withPermission(Manifest.permission.CAMERA)

.withListener(new PermissionListener() {

@Override public void onPermissionGranted(PermissionGrantedResponse response) {/* ... */}

@Override public void onPermissionDenied(PermissionDeniedResponse response) {/* ... */}

@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {/* ... */}

}).check();

多个权限,

Dexter.withActivity(this)

.withPermissions(

Manifest.permission.CAMERA,

Manifest.permission.READ_CONTACTS,

Manifest.permission.RECORD_AUDIO

).withListener(new MultiplePermissionsListener() {

@Override public void onPermissionsChecked(MultiplePermissionsReport report) {/* ... */}

@Override public void onPermissionRationaleShouldBeShown(List permissions, PermissionToken token) {/* ... */}

}).check();

是不是很简单,最后给出一个示例,申请三个权限,当某个全选被拒绝时,提示跳转设置,

MultiplePermissionsListener mMultiplePermissionListener =

SnackbarOnAnyDeniedMultiplePermissionsListener.Builder

.with(findViewById(android.R.id.content), "Some permissions need to access!")

.withOpenSettingsButton("Settings")

.withCallback(new Snackbar.Callback() {

@Override

public void onShown(Snackbar sb) {

super.onShown(sb);

}

@Override

public void onDismissed(Snackbar transientBottomBar, int event) {

super.onDismissed(transientBottomBar, event);

}

}).build();

Dexter.withActivity(this)

.withPermissions(Manifest.permission.CAMERA,

Manifest.permission.READ_CONTACTS,

Manifest.permission.RECORD_AUDIO)

.withListener(mMultiplePermissionListener).check();

Very Easy, Right?

最后附上demo视频:

47ce05d2d5b5

permission.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值