Android6.0动态获取摄像头权限(举一反三)

6.0系统可以动态的获取系统的权限API>22

例如摄像头

举一反三写一个动态获取摄像头的方法,其他的权限也可以稍微修改使用。

在调用摄像头的地方进行判断,系统的版本

Build.VERSION.SDK_INT>22

如果系统6.0或以上,就判断有没有权限:

ContextCompat.checkSelfPermission(MainActivity.this,
                            android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED

PackageManager有两个属性PERMISSION_GRANTED,PERMISSION_DENIED;

GRANTED是已经获取到权限,
DENIED是没有获取到权限;

如果有权限了想干嘛干嘛,如果没有,就去获取权限:

ActivityCompat.requestPermissions(MainActivity.this,
   new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);

然后获取权限就结束了,然后干嘛呢?获取权限也有个回调:onRequestPermissionsResult

 @Override
    public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) {
        switch (requestCode){
            case CAMERA_OK:
                if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
  //这里已经获取到了摄像头的权限,想干嘛干嘛了可以

                }else {
                //这里是拒绝给APP摄像头权限,给个提示什么的说明一下都可以。
                    Toast.makeText(MainActivity.this,"请手动打开相机权限",Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }

    }

贴一下获取权限的代码:

if (Build.VERSION.SDK_INT>22){
                    if (ContextCompat.checkSelfPermission(MainActivity.this,
                            android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
                       //先判断有没有权限 ,没有就在这里进行权限的申请
                        ActivityCompat.requestPermissions(MainActivity.this,
                                new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);

                    }else {
                      //说明已经获取到摄像头权限了 想干嘛干嘛  
                    }
                }else {
//这个说明系统版本在6.0之下,不需要动态获取权限。

                }

举一反三,可以把其他的动态申请权限的替换来。别忘了清单文件里面注册上权限。

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值