Android6.0以上权限获取权限的问题

  今天把 targetSdkVersion 从22 换成23  项目里面有一个录视频的应用
   直接启动  在 targetSdkVersion>=23 里面 拍摄视频的代码 就报错了。 
   需要判断权限 。   
   1.把需要判断的权限列出来
    final String[] PERMISSIONS = new String[]{
        Manifest.permission.CAMERA,
        Manifest.permission.RECORD_AUDIO
     };
   2.去看看 权限是否有打开
          ActivityCompat.requestPermissions(htmlActivity, PERMISSIONS, BURNE_VIDEO);
    3.权限回调
  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[]      grantResults) {
        // 判断是否有权限 

        if (requestCode == BURNE_VIDEO && hasAllPermissionsGranted(grantResults)) {

           //有权限 去启动Video

            startVideo();

        } else {

            //去打开权限   

            showPermissionDialog();
        }
    }
   4判断有没有权限
    private boolean hasAllPermissionsGranted(int[] grantResults) {
        for (int grantResult : grantResults) {
                
                PackageManager.PERMISSION_GRANTED  //有权限   PackageManager.PERMISSION_DENIED无权限
             if (grantResult == PackageManager.PERMISSION_DENIED) {
                return false;
            }
        }
        return true;

    }

    4.弹出对话框 让 用户去设置 权限

    private void showPermissionDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(htmlActivity);
        builder.setTitle("帮助");
        builder.setMessage("当前应用缺少相机权限或者录音权限。请点击\"设置\"-打开所需权限。");
        // 拒绝, 退出应用
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });


        builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                startAppSettings();
                dialog.dismiss();
            }
        });
        builder.setCancelable(false);
        builder.show();
    }


   以上就是 Android6.0系统判断有没有权限

    Android 6.0一下 直接启动相机

    但是在魅族手机上面在没有权限的时候报错

  at android.hardware.Camera.setHasPreviewCallback(Native Method)
08-31 14:32:03.465 29135-29135/com.badianban.hidate W/System.err:     at android.hardware.Camera.setPreviewCallback(Camera.java:951)

   用来判断 是否可以启动相机

private boolean isCamera() {
        boolean isCanUse = true;
        Camera mCamera = null;
        try {
            mCamera = Camera.open();
            if (mCamera != null) {


                Camera.Parameters mParameters = mCamera.getParameters();
                mParameters.set("orientation", "portrait");
                mCamera.setParameters(mParameters);
            }
        } catch (Exception e) {
            e.printStackTrace();
            isCanUse = false;


        }
        try {
            if (mCamera != null) {
                mCamera.release();
            }
        } catch (Exception emCamera) {
            emCamera.printStackTrace();
        }
        return isCanUse;

    }


private boolean setCameraParams() {
        boolean isCanUse = true;
        Camera mCamera = null;
        try {
            mCamera = Camera.open();
            if (mCamera != null) {


                Camera.Parameters mParameters = mCamera.getParameters();
                mParameters.set("orientation", "portrait");
                mCamera.setParameters(mParameters);
            }
        } catch (Exception e) {
            e.printStackTrace();
            isCanUse = false;


        }
        try {
            if (mCamera != null) {
                mCamera.release();
            }
        } catch (Exception emCamera) {
            emCamera.printStackTrace();
        }
        return isCanUse;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值