Android6.0以上許可權獲取許可權的問題
直接啟動 在 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;
}