Android 运行时权限申请框架(自动化检测申请)
- 支持4.4以后版本(95%的设备)
- 添加异常判断,便于调试
- 可按需添加权限检测申请
- 6.0悬浮窗与8.0安装应用权限只能分别单独申请
- 可自动化检测权限并申请(上述两个权限默认DENIED)
Project层级下的build.gradle文件
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Module层级下的build.gradle文件
dependencies {
...
implementation 'com.github.dasinwong:EasyPermission:1.1'
}
权限申请核心类
方法 | 描述 |
---|---|
with | 创建EasyPermission对象的静态方法 |
add | 添加权限,可连续调用 |
listen | 添加申请回调监听(选用) |
request | 申请权限 |
autoRequest | 自动化检测权限并申请 |
抽象类,权限请求后返回请求结果集合
枚举值 | 描述 |
---|---|
GRANTED | 允许权限 |
DENIED | 拒绝申请 |
添加的权限未在AndroidManifest中配置会抛出运行时异常,有利于开发调试
EasyPermission.with(this)
.add(Manifest.permission.CAMERA)
.add(Manifest.permission.READ_EXTERNAL_STORAGE)
.add(Manifest.permission.ACCESS_COARSE_LOCATION)
.listen(new PermissionListener() {
@Override
public void onComplete(Map<String, PermissionResult> resultMap) {
for (Map.Entry<String, PermissionResult> entry : resultMap.entrySet()) {
Log.e("EasyPermission", entry.getKey() + " " + entry.getValue());
}
}
}).request();
自动获取AndroidManifest文件中的运行时权限并申请
EasyPermission.with(this).listen(new PermissionListener() {
@Override
public void onComplete(Map<String, PermissionResult> resultMap) {
for (Map.Entry<String, PermissionResult> entry : resultMap.entrySet()) {
Log.e("EasyPermission", entry.getKey() + " " + entry.getValue());
}
}
}).autoRequest();
部分手机重启后生效,不建议添加监听
EasyPermission.with(this)
.add(Manifest.permission.SYSTEM_ALERT_WINDOW)
.request();
不建议添加监听
EasyPermission.with(this)
.add(Manifest.permission.REQUEST_INSTALL_PACKAGES)
.request();