PermissionsDispatcher 的简单使用获取权限

github传送门

Android 危险权限组
PermissionsDispatcher 的简单使用获取权限_第1张图片
PermissionsDispatcher 注解的作用
PermissionsDispatcher 的简单使用获取权限_第2张图片
1.@RuntimePermissions(必写):用在需要申请权限的Activity或者Fragment上
2.@NeedsPermission(必写):用在需要申请权限的方法上
其他注释如上表,非必写

PermissionsDispatcher 的使用
1.在清单文件中添加你所需要用到的危险权限,这里演示相机、和存储权限

    
    
    

2.添加依赖,最新版本可查看github

 implementation "org.permissionsdispatcher:permissionsdispatcher:4.3.1"
  annotationProcessor "org.permissionsdispatcher:permissionsdispatcher-processor:4.3.1"

3.在Activity中使用


private class MainActivity extends AppCompatActivity{

	//第一个注解
   @RuntimePermissions
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_person_home);
        
   		findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    //MainActivityPermissionsDispatcher是由“类名”+PermissionsDispatcher拼接的
                    //showDialogWithPermissionCheck是由“方法名”+WithPermissionCheck拼接的
                    MainActivityPermissionsDispatcher.showDialogWithPermissionCheck(MainActivity.this);
                    }
                });
    }

//使用在需要获取权限方法的注解,注解后面的括号写上需要申请的权限,可以单个,也可以多个,
//注意多个权限要使用{ },另外,注解的方法只能是public的
@NeedsPermission({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE})
    void showChangeBackgroundDialog() {
		//do something
		//这里写上比如调用摄像头等需要用到权限的代码
}

//这是注解是在用户点击不再询问并且禁止申请权限,下一次用户需要申请权限时触发
    @OnNeverAskAgain({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE})
    void showNeedPermissionWhy() {
       Toast.show("没有权限");
    }

	//必须写上onRequestPermissionsResult回调
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //必须写上
        NewPersonHomeActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
    }
}

踩坑点:
1.NeedsPermission和OnShowRationale、OnPermissionDenied、OnNeverAskAgain的注解权限要一致,否则不会回调提示方法。
2.写完注解方法一定要Rebuild Project。
3.安装插件,alt+insert可以快速创建注解方法。

你可能感兴趣的:(Android)