在我们开发应用时有时候可能会使用到一些敏感的权限,比如短信权限,电话权限等。如果要完整的处理一个具有权限的操作,需要关注以下几点:
- 检测权限已有时的操作
- 没有权限,申请权限成功的操作
- 没有权限,申请权限失败的操作
- 没有权限,申请权限失败,且勾选了不再提示时的操作
PermissionsDispatcher是一个在Android中可以通过注解形式申请动态申请权限的框架。使用PermissionsDispatcher框架可以使用注解来将每个点的处理方法简单的切入,使用方法如下,以下是在API 26环境下运行的情况。
1.Gradle引入
dependencies {
...
implementation 'com.github.hotchemi:permissionsdispatcher:3.2.0'
annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:3.2.0'
...
}
2.使用注解完善申请权限时的关键点
在使用PermissionsDispatcher框架时,有几个关键的注释需要了解:
- @RuntimePermissions:加在Activity或者Fragment上,表明此界面有操作会使用到权限
- @NeedsPermission(Manifest.permission.X):加在方法上,表明执行此方法前,需要获取到注解中的权限,如果没有权限就会自动申请,请求用户同意
- @OnShowRationale(Manifest.permission.X):加在方法上,当用户第一次拒绝此权限时被调用,向用户说明为何需要此权限
- @OnPermissionDenied(Manifest.permission.X):用户拒绝权限时调用
- @OnNeverAskAgain(Manifest.permission.X):用户拒绝并勾选了不再提示时会调用
代码
//此处的注解表明此界面中的操作某些需要权限
@RuntimePermissions
public class PermissionActivity extends Activity {
private Button btn_permission;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_permission)