在调用ActivityResultContracts.TakePicture()前,先获取相机权限,可以使用如下代码:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST);
} else {
takePicture();
}
其中,CAMERA_PERMISSION_REQUEST为自定义的请求码,takePicture()为拍照的逻辑代码。如果权限被允许,则直接执行takePicture();如果被拒绝,则需要重复请求权限。
同时,在AndroidManifest.xml文件中添加相应权限:
注意,Android 6.0及以上版本需要动态请求权限。