Android 6.0以上动态访问权限调用相机(隐式跳转)

1.清单文件

动态和静态添加权限都需要配置清单文件!

2.相机的点击事件

//设置相机的点击事件
img.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(Build.VERSION.SDK_INT>=23){
            ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},0);
            int permission = ContextCompat.checkSelfPermission(MainActivity.this.getApplicationContext(), Manifest.permission.CAMERA);
            if(permission==PackageManager.PERMISSION_GRANTED){
                //如果有了相机的权限就调用相机
                startCamera();
            }else {
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("提示");
                builder.setMessage("是否开启相机权限");
                builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //去请求相机权限
                        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},0);
                    }
                });
                builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "您拒绝了开启相机权限", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.show();
            }
        }else {
            //不是6.0直接调用相机
            startCamera();
        }
    }
});

3.调用开启相机的方法

private void startCamera() {
    //打开相机
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     intent.addCategory("android.intent.category.DEFAULT");
     startActivityForResult(intent,1);
}

4.事件回调(权限申请完回调)

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(permissions[0].equals(Manifest.permission.CAMERA)){
        if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
            Toast.makeText(MainActivity.this,"已授权",Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(this, "授权失败", Toast.LENGTH_SHORT).show();
        }
    }
}

你可能感兴趣的:(Android 6.0以上动态访问权限调用相机(隐式跳转))