Android 动态权限最全解析
短信预约 -IT技能 免费直播动态提醒
本文目录动态权限概述动态权限分类动态权限申请方法方法1:官方API提供的方法步骤1:检查是否有权限步骤2:申请权限步骤3:回调函数的处理完整代码方法2:RxPermission引入依赖声明权限申请单个权限申请多个权限方法3:AndPermission引入依赖申请单个或多个权限
官网:https://github.com/tbruyelle/RxPermissions 引入依赖
官网:https://github.com/yanzhenjie/AndPermission 引入依赖
作者:huwei0814
方法2:RxPermission
RxPermission
可以帮助开发者简化获取权限的相关处理操作,而且内部也自动帮我们判断了版本是否需要申请权限。同时结合RxJava
可以方便的回调各种结果。官网:https://github.com/tbruyelle/RxPermissions 引入依赖
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
implementation 'io.reactivex.rxjava2:rxjava:2.0.1'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
}
由于
rxpermissions
需要用到rxjava,所有rxjava
的包也一起引入。
声明权限
申请单个权限
RxPermissions permissions = new RxPermissions(this);
permissions.request(Manifest.permission.CAMERA)
.subscribe(new Consumer() {
@Override
public void accept(Boolean aBoolean) {
if (aBoolean ) {
Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
}
}
});
申请多个权限
RxPermissions permissions = new RxPermissions(this);
permissions.request(Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE)
.subscribe(new Consumer() {
@Override
public void accept(Boolean aBoolean) {
if (aBoolean ) {
Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
}
}
});
方法3:AndPermission
AndPermission
跟前面的RxPermission
使用方法类似官网:https://github.com/yanzhenjie/AndPermission 引入依赖
implementation 'com.yanzhenjie:permission:2.0.3'
申请单个或多个权限
AndPermission.with(this)
.runtime()
.permission(Permission.WRITE_EXTERNAL_STORAGE,Permission.CAMERA)
.onGranted(permissions -> {
Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
})
.onDenied(permissions -> {
Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
})
.start();
效果如下:
huwei0814 原创文章 29获赞 115访问量 2万+ 关注 私信 展开阅读全文作者:huwei0814
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341