动态权限申请三方库

记录一下,方便新项目使用

首先加入依赖,加rxjava是因为会使用到 subscribe 方法

implementation 'com.github.tbruyelle:rxpermissions:0.12'
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
maven { url 'https://jitpack.io' }

使用

rxPermissions
                .request(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)//权限列表
                .subscribe(granted -> {
                    if (granted) {//获取了全部权限
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                            if (!Environment.isExternalStorageManager()) {//去开启权限
                                Intent intent = new Intent("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION");
                                intent.setData(Uri.parse("package:" + getPackageName()));
                                startActivity(intent);
                            } else {
                                Log.e(TAG,"已获得权限");
                            }
                        } else {
                            Log.i(TAG,"已获得权限");
                        }
                    } else {//至少有一个权限被拒绝
                        Toast.makeText(this, "至少有一个权限被拒绝", Toast.LENGTH_SHORT).show();
                        finish();
                    }
                });

你可能感兴趣的:(rxjava,android)