关闭

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

标签: androidCamera
1214人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4570次
    • 积分:84
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档