6.0照相机

例如摄像头

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

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

Build.VERSION.SDK_INT>22
 
 
  • 1

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

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

PackageManager有两个属性PERMISSION_GRANTED,PERMISSION_DENIED;

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

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

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

然后获取权限就结束了,然后干嘛呢?获取权限也有个回调: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;
        }

    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

贴一下获取权限的代码:

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

                }
/**
 * fragment回调处理权限的结果
 * @param requestCode 请求码 要等于申请时候的请求码
 * @param permissions 申请的权限
 * @param grantResults 对应权限的处理结果
 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode != 1) {
        return;
    }

    if (grantResults.length > 0) {
        List<String> deniedPermissionList = new ArrayList<>();
        for (int i = 0; i < grantResults.length; i++) {
            if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
                deniedPermissionList.add(permissions[i]);
            }
        }

        if (deniedPermissionList.isEmpty()) {
            //已经全部授权
            //permissionAllGranted();
        } else {

            //勾选了对话框中”Don’t ask again”的选项, 返回false
            for (String deniedPermission : deniedPermissionList) {
                boolean flag = ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA);
                if (!flag) {
                    //拒绝授权
                    //permissionShouldShowRationale(deniedPermissionList);
                    return;
                }
            }
            //拒绝授权
            //permissionHasDenied(deniedPermissionList);

        }


    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

转载地址:http://blog.csdn.net/beijinghsj/article/details/53581764

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值