Android开发之权限调用

本文讲述了在Android开发中遇到的摄像头和存储权限问题,特别是Android 6.0及以上版本的动态权限管理。由于系统改动,开发者需要在运行时请求权限,否则可能导致错误提示或功能无法正常使用。文章提到了在处理存储权限时遇到的错误信息误导,以及如何进行版本判断来适配不同的权限策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己在开发过程中遇到了两个权限方面的巨坑,第一个是摄像头权限的调取第二个是存储权限;第一个倒还好,提示信息比较明确,第二个存储权限的Error提示巨坑,提示找不到相应路径,刚开始还以为自己路径拿错了,一直修改自己获取图片路径的方式.....

Android6.0从版本开始有一个很恶心人的改动,那就是动态权限,稍不注意就会掉到坑里去。

在Android6.0以前,只需要在清单配置文件添加相应权限就可以调用了,但是如果是在Android6.0设备上,需要去动态添加相应权限。

进行版本号判断

// 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    // 检查该权限是否已经获取
    int i = ContextCompat.checkSelfPermission(this, permissions[0]);
    // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
    if (i != PackageManager.PERMISSION_GRANTED) {
        // 如果没有授予该权限,就去提示用户请求
        showDialogTipUserRequestPermission();
    }
private void showDialogTipUserRequestPermission() {
    // 提示用户该请求权限的弹出框

    new AlertDialog.Builder(this)
            .setTitle("存储权限不可用")
            .setMessage("本应用需要获取存储空间,为你存储个人信息;\n否则,您将无法正常使用")
            .setPositiveButton("立即开启", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    startRequestPermission();
                }
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            }).setCancelable(false).show();
}

// 开始提交请求权限
private void startRequestPermission() {
    ActivityCompat.requestPermissions(this, permissions, 321);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值