Android权限(单个权限申请)

单个权限申请:

private String storagePermission[] = {Manifest.permission.READ_EXTERNAL_STORAGE};

/**
     * 获取相册权限
     */
    private void getStoragePermission() {
        //版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //权限是否已经 授权 GRANTED---授权  DINIED---拒绝
            if (ContextCompat.checkSelfPermission(this, storagePermission[0]) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(CertificationActivity.this, storagePermission, 1001);
            } else {
                goPhotoAlbum();
            }
        }
    }

 

//权限回调
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 1001) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    //默认false 第二次提醒会有是否不在询问按钮,选择则为true  不在提醒是否申请权限
                    if (!shouldShowRequestPermissionRationale(permissions[0])) {
                        permissionDialog();
                    }
                } else {
                    MyToast.show("权限已开启");
                    goPhotoAlbum();
                }
            }
        }
}
/**
     * 弹窗是否允许权限
     */
    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) {
                //拒绝
            }
        });
    }


/**
     * 拒绝权限,跳转到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);
    }
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 123) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(this, storagePermission[0]) != PackageManager.PERMISSION_GRANTED) {
                    //默认false 第二次提醒会有是否不在询问按钮,选择则为true  不在提醒是否申请权限
                    if (!shouldShowRequestPermissionRationale(storagePermission[0])) {
                        permissionDialog();
                    }
                } else {
                    MyToast.show("相关权限已开启");
                }
            }
        }

        if (requestCode == 2) {
            Bitmap bm = null;
            //外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口
            ContentResolver resolver = getContentResolver();

            //此处的用于判断接收的Activity是不是你想要的那个
            try {
                Uri originalUri = data.getData();//获得图片的uri
                bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);//显得到bitmap图片
                //这里开始的第二部分,获取图片的路径:
                String[] proj = {MediaStore.Images.Media.DATA};
                //android多媒体数据库的封装接口,具体的看Android文档
                Cursor cursor = managedQuery(originalUri, proj, null, null, null);
                //这个是获得用户选择的图片的索引值
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                //将光标移至开头 ,这个很重要,不小心很容易引起越界
                cursor.moveToFirst();
                //最后根据索引值获取图片路径
                String path = cursor.getString(column_index);

                imgPositive.setImageBitmap(bm);
            }catch (IOException e) {
                MyLogger.e("========", e.getMessage());
            }
        }
    }
/**
     * 打开相册
     */
    private void goPhotoAlbum() {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent, 2);
    }

多个权限申请:多个权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值