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之下,不需要动态获取权限。

                }

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

你可能感兴趣的:(Android可用代码)