AndroidUtilCode
所提供的动态权限框架是我见过的最为省事的框架。没有了宿主页的限制,可以在任何地方进行动态申请。极大地解决了为H5封装接口或者封装能力类时的尴尬境地。其用法极其简单,分为如下三步。
dependencies {
implementation 'com.blankj:utilcode:1.12.5'
}
建议在APP启动之初就初始化该库。它不光提供了动态权限框架,还提供了很多实用的工具。比如获取当前最顶层Activity(ActivityUtils.getTopActivity()
)。
Utils.init(getApplication());
public void callPhoneNumberWithPermissionCheck(String phoneNumber) {
if (PermissionUtils.isGranted(Manifest.permission.CALL_PHONE)) {
callPhoneNumber(phoneNumber);
} else {
PermissionUtils.permission(Manifest.permission.CALL_PHONE).callback(new PermissionUtils.SimpleCallback() {
@Override
public void onGranted() {
// do something about phone call
}
@Override
public void onDenied() {
Toast.makeText(MainActivity.this, "电话权限被拒绝", Toast.LENGTH_SHORT).show();
PermissionUtils.openAppSettings();
}
}).request();
}
}
接口说明:
接口名 | 作用 |
---|---|
isGranted | 判断是否拥有某权限 |
permission | 根据所需权限,构造一个PermissionUtil实例 |
callback | 填充回调,支持简单回调和完整回调,一般应用场景咱们使用简单回调即可,完整回调会返回一个权限列表,说明那些允许了那些失败了,场景应用不多 |
request | 发起请求 |
openAppSettings | 打开系统设置,未提供设置结束后回调能力 |
可以看出,AndroidUtilCode
这个包提供的动态请求框架十分傻瓜,依赖后,初始化库,然后就随用随写即可,毫无滞碍,这个轮子造的真乃吾辈福音!