android 权限申请开源,Android权限(多个权限申请)

多个权限:

private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE};

private List permissionList = new ArrayList<>();

/**

* 获取相册权限

*/

private void getPermission() {

if (permissionList != null) {

permissionList.clear();

}

//版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

//权限是否已经 授权 GRANTED---授权 DINIED---拒绝

for (String permission : permissions) {

if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {

permissionList.add(permission);

}

}

if(!permissionList.isEmpty()){

ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), 1000);

}else{

//表示全都授权了

getPic();

}

}

}

//权限回调

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (requestCode == 1000) {

//权限请求失败

if(grantResults.length > 0){

//存放没授权的权限

List deniedPermissions = new ArrayList<>();

for(int i = 0; i < grantResults.length; i++){

int grantResult = grantResults[i];

String permission = permissions[i];

if(grantResult != PackageManager.PERMISSION_GRANTED){

deniedPermissions.add(permission);

}

}

if(deniedPermissions.isEmpty()){

//说明都授权了

getPic();

} else {

//默认false 第二次提醒会有是否不在询问按钮,选择则为true 不在提醒是否申请权限

if (!shouldShowRequestPermissionRationale(deniedPermissions.get(0))) {

permissionDialog();

}

}

}

}

}

/**

* 弹窗是否允许权限

*/

private void permissionDialog() {

MyAlertDialog permissionDialog = new MyAlertDialog(this);

permissionDialog.setContentText("需要相机和读写权限,是否去设置?");

permissionDialog.setCustomDialogListener(new MyDialogClickListener() {

@Override

public void clickRight(Dialog dialog, Object data) {

//允许

goToAppSetting();

}

@Override

public void clickLeft(Dialog dialog, Object data) {

//拒绝

}

});

}

注意:小米手机在跳转去申请权限的时候会出现,给了权限但是依然无法使用的问题,请进入系统权限设置才可生效

如果是MIUI12,则需要进入隐私保护,在里面找到需要设置的app,授权权限才可

原因是因为跳转的权限是小于系统权限的,跳转设置权限并不包含系统权限,也就是系统权限大于和包含跳转权限。

不知道是bug还是小米故意为之

/**

* 拒绝权限,跳转到app设置

*/

private void goToAppSetting() {

Intent intent = new Intent();

intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

Uri uri = Uri.fromParts("package", getPackageName(), null);

intent.setData(uri);

startActivityForResult(intent, 123);

}

private void goPhotoAlbum() {

Intent intent = new Intent();

intent.setAction(Intent.ACTION_PICK);

intent.setType("image/*");

startActivityForResult(intent, 2);

}

public void startCamera(){

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent, 3);

}

单个权限申请:单个权限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值