测试的时候发现点击拍照没有调起相机,debug发现是 cameraIntent.resolveActivity()返回 null
模拟器跟小米真机有相机却无法调用,解决方法,加个判断,判断是否有摄像头, 测试暂无发现其他问题:
boolean isCamera = false;
try {
CameraManager cameraManager = (CameraManager) getActivity().getSystemService(Context.CAMERA_SERVICE);
String[] cameraIds = cameraManager.getCameraIdList();
if (cameraIds.length > 0) {
//摄像头存在
if (cameraIds[0] != null || cameraIds[1] != null) {
isCamera = true;
}
}
} catch (IllegalStateException | CameraAccessException e) {
e.printStackTrace();
ToastUtils.showShortToast(getString(R.string.open_camera_failure));
}
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null || isCamera) {}
在官网看到可以用 getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)
检查相机在运行时的可用性