本文目录动态权限概述动态权限分类动态权限申请方法方法1:官方api提供的方法步骤1:检查是否有权限步骤2:申请权限步骤3:回调函数的处理完整代码
方法2:RxPermission
RxPermission
可以帮助开发者简化获取权限的相关处理操作,而且内部也自动帮我们判断了版本是否需要申请权限。同时结合RxJava
可以方便的回调各种结果。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
使用方法类似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万+ 关注 私信 展开阅读全文
--结束END--
本文标题: Android 动态权限最全解析
本文链接: https://www.lsjlt.com/news/29784.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0