直接启动 在 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;
}