首先我们要先判断我们手机的当前版本是否大于6.0 如果大于就要动态的添加权限
// 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
if (Build.VERSION.SDK_INT >= 23) {
// 检查该权限是否已经获取
int i = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA);
if (i != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
requestPermissions( new String[]{Manifest.permission.CAMERA}, 321);
// ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, 321);
} else {
Toast.makeText(getActivity(), "已授权", Toast.LENGTH_SHORT).show();
// 第二次进入直接打开相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
} else {
Toast.makeText(getActivity(), "6.0以下", Toast.LENGTH_SHORT).show();
//打开相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
授权回调方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Toast.makeText(getActivity(), "ni", Toast.LENGTH_SHORT).show();
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//打开相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory("android.intent.category.DEFAULT");
startActivityForResult(intent, 0);
}
}
相机回调的方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bitmap bitmap = data.getParcelableExtra("data");
ImageView imageView = search.findViewById(R.id.image);
imageView.setImageBitmap(bitmap);
}